Python - 字符串

字符串是Python中最受欢迎的类型之一.我们可以通过在引号中包含字符来创建它们. Python将单引号视为双引号.创建字符串就像为变量赋值一样简单.例如 :

var1 = 'Hello World!'
var2 = "Python Programming"

访问字符串中的值

Python不支持字符类型;这些被视为长度为1的字符串,因此也被视为子字符串.

要访问子字符串,请使用方括号与索引或索引一起切片以获取子字符串.例如 :

#!/usr/bin/python

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

执行上述代码时,会产生以下结果 :

var1[0]:  H
var2[1:5]:  ytho

更新字符串

您可以通过(重新)将变量分配给另一个字符串来"更新"现有字符串.新值可以与其先前的值相关联,也可以与完全不同的字符串相关联.例如 :

#!/usr/bin/python

var1 = 'Hello World!'
print "Updated String :- ", var1[:6] + 'Python'

当上面的代码执行后,它产生以下结果 :

Updated String :-  Hello Python

转义字符

下表是可以用反斜杠表示法表示的转义或不可打印字符的列表.

转义字符得到解释;单引号和双引号字符串.


范围内

反斜杠表示法十六进制字符描述
\ a0x07贝尔或警报
\ b0x08Backspace
\ cx Control-x
\Cx Control-x
\ e0x1bEscape
\f0x0cFormfeed
\M-\Cx Meta-Control-x
\ n0x0a换行符
\ nnn 八进制表示法,其中n在0.7
\ r0x0d回程
\s0x20空格
\t0x09Tab
\\ \\ v0x0b垂直标签
\ x 字符x
\ xnn 十六进制表示法,其中n在0.9范围内,af或AF

字符串特殊运算符

假设字符串变量 a 持有'Hello',变量 b 持有'Python',然后&减去;

$中给出

Opera tor描述示例
+连接 - 在两侧添加值运算符a + b将给出HelloPython
*重复 - 创建新字符串,连接相同
字符串的多个副本
a * 2将给-HelloHello
[]Slice  - 给出来自给定索引的字符a [1]将给出e
[:]范围切片 - 给出给定范围内的字符a [1:4]将在
b $ bMembership  - 如果给定字符串中存在某个字符,则返回trueH中的H将给1
不在Membership  - 如果给定字符串中不存在某个字符,则返回trueM不在一个会给1
r/R原始字符串 - 禁止转义字符的实际含义.原始字符串的语法与普通字符串的语法完全相同,原始字符串运算符除外,字母"r"在引号之前. "r"可以是小写(r)或大写(R),必须紧接在第一个引号之前.print r'\ n'打印\ n并打印R'\\\
'prints \ n
格式 - 执行字符串格式化参见下一节

字符串格式化运算符

Python最酷的功能之一是字符串格式运算符%.该运算符对于字符串是唯一的,并且具有来自C的printf()系列的功能.以下是一个简单的示例 :

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21)

执行上述代码时,会产生以下结果 :

My name is Zara and weight is 21 kg!

以下是可与%&minus一起使用的完整符号集列表;

格式符号Conversion
%c字符
%s通过str转换字符串()格式化之前
%i签名十进制整数
%d带符号的十进制整数
%u无符号十进制整数
%o八进制整数
%x十六进制整数(小写字母)
%X十六进制整数(大写字母)
%e指数表示法(小写'e' )
%E指数表示法(带UPPERcase) 'E')
%f浮点实数
%g%的较短者f和%e
%G较短of%f和%E

下表列出了其他支持的符号和功能 :

符号功能
*参数指定宽度或精度
-左对齐
+显示符号
< sp>在正数之前留空格
添加八进制前导零('0')或十六进制前导'0x'或'0X',具体取决于是使用'x'还是'X'.
0从左边用零填充(而不是空格)
'%%'为您留下一个文字'%'
(var)映射变量(字典参数) )
mnm是最小总宽度和n是小数点后显示的位数(如果是应用)

三重引号

Python的三重引号通过允许字符串跨越多行来实现拯救,包括逐字NEWLINE,TAB和任何其他特殊字符.

三重引号的语法由三个连续的单引号或双引号组成.

#!/usr/bin/python

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print para_str

执行上述代码时,会产生以下结果.请注意每个特殊字符的编写方式已经转换为打印形式,直到最后一个NEWLINE,在"up."和结束三个引号之间的字符串末尾.还要注意NEWLINE发生在一行的末尾有一个明确的回车符或者它的转义代码(\ n) :

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.

原始字符串根本不会将反斜杠视为特殊字符.每个字符都是放入原始字符串保持你写的方式&减去;

#!/usr/bin/python

print 'C:\\nowhere'

执行上述代码时,它会产生以下结果 :

C:\nowhere

现在让我们使用原始字符串.我们将表达式放在 r'expression'中,如下所示 :

#!/usr/bin/python

print r'C:\\nowhere'

当上面的代码是执行后,它会产生以下结果 :

C:\\nowhere

Unicode字符串

Python中的普通字符串在内部存储为8位ASCII,而Unicode字符串存储为16位Unicode.这允许更多变化的字符集,包括来自世界上大多数语言的特殊字符.我将我对Unicode字符串的处理限制为以下 :

#!/usr/bin/python

print u'Hello, world!'

执行上述代码时,会产生以下结果&minus ;

Hello, world!

如您所见,Unicode字符串使用前缀u,就像原始字符串使用前缀r一样.

内置字符串方法

Python包含以下内置方法来操作字符串 :

Sr.No.带描述的方法
1capitalize()

首字母大写字母

2center (width,fillchar)

返回一个以空格填充的字符串,其中原始字符串居中于总宽度列.

3count (str,beg = 0,end = len(string) )

计算在字符串或字符串的子字符串中出现str的次数,如果给出起始索引和结束索引结束.

4decode(encoding ='UTF-8',errors ='strict')

使用为编码注册的编解码器解码字符串.编码默认为默认字符串编码.

5encode(encoding ='UTF-8',errors ='strict')

返回字符串的编码字符串版本;出错时,默认是引发ValueError,除非使用'ignore'或'replace'给出错误.

6endswith(suffix,beg = 0,end = len(string) )))

确定字符串的字符串或子字符串(如果给出起始索引的请求和结束索引结束)是否以后缀结尾;如果是,则返回true,否则返回false.

7expandtabs(tabsize = 8)

将字符串中的制表符扩展为多个空格;如果未提供制表符,则每个制表符默认为8个空格.

8find(str,beg = 0 end = len(string))

如果找到起始索引beg和结束索引结束,则确定str是出现在字符串中还是字符串的子字符串中,如果找到则返回索引,否则返回-1.

9index(str ,beg = 0,end = len(string))

与find()相同,但如果未找到str则引发异常.

10isalnum()

如果字符串至少包含1个字符且所有字符都是字母数字,则返回true,否则返回false.

11isalpha()

如果string至少有1个字符且所有字符都是字母,则返回true,否则返回false.

12isdigit()

返回如果字符串仅包含数字,则返回true,否则返回false.

13islower()

如果字符串包含至少1个外壳字符,则返回true所有套接字符均为小写,否则为false.

14isnumeric()

如果unicode字符串仅包含数字字符,则返回true否则为假.

15isspace()

如果string包含on,则返回true是空白字符,否则为假.

16istitle()

如果字符串被正确"标题化",则返回true,否则返回false./p>

17isupper()

如果string至少有一个套管字符且所有套管字符都是大写,则返回true,否则返回false./p>

18join(seq)

将序列seq中元素的字符串表示形式合并(连接)成字符串,并带有分隔符字符串.

19len(string)

返回字符串的长度

20ljust(width [,fillchar])

返回一个空格填充的字符串,其原始字符串左对齐为总宽度列.

21lower()

将字符串中的所有大写字母转换为小写.

22lstrip()

删除字符串中的所有前导空格.

23maketrans()

返回要在翻译函数中使用的转换表.

24max(str)

返回最大字母字母来自字符串str.

25min(str)

从字符串str返回最小字母字符.

26replace(old,new [,max])

如果给出最大值,则用新的或最多次出现的字符串替换所有出现的字符串.

27rfind(str,beg = 0,end = len(string))

与find()相同,但向后搜索在字符串中.

28rindex(str,beg = 0,end = len(string))

与index()相同,但是用字符串向后搜索.

29rjust(width,[,fillchar])

返回一个空格填充的字符串,原始字符串右对齐为总计宽度列.

30rstrip()

删除字符串的所有尾随空格.

31split(str ="",num = string.count(str))

根据分隔符str(如果未提供空格)拆分字符串并返回子字符串列表;如果给定,最多分为多个子串.

32splitlines(num = string.count('\ n'))

在所有(或数字)NEWLINE中拆分字符串并返回每行删除NEWLINE的列表.

33startswith(str,beg = 0,end = len(string))

确定字符串或字符串的子串(如果给出起始索引求和结束索引结束)是否以substring str开头;如果是,则返回true,否则返回false.

34strip([chars])

执行lstrip()和rstrip() string.

35swapcase()

反转字符串中所有字母的大小写.

36title()

返回字符串的"titlecased"版本,即所有单词都以大写字母开头,其余字母以小写字母开头.

37translate(table,deletechars ="")

根据转换表str(256个字符)转换字符串,删除del字符串中的字符串.

38upper()

将字符串中的小写字母转换为大写.

39zfill(width)

返回用零填充的原始字符串到总宽度字符;对于数字,zfill()保留给定的任何符号(少于一个零).

40isdecimal()

如果a,则返回true unicode字符串只包含十进制字符,否则为false.