Python 3 - 字符串

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

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

访问字符串中的值

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

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

#!/usr/bin/python3

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/python3

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

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

Updated String :-  Hello Python

转义字符

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

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

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

字符串特殊运算符

假设字符串变量 a 包含'Hello'和变量 b 持有'Python',然后:

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

字符串格式化运算符

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

#!/usr/bin/python3

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

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

My name is Zara and weight is 21 kg!

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

Sr.No.格式符号&转换
1

%c

字符

2

%s

格式化之前通过str()进行字符串转换

3

%i

带符号的十进制整数

4

%d

带符号的十进制整数

5

%u

无符号十进制整数

6

%o

八进制整数

7

%x

十六进制整数(小写字母)

8

%X

十六进制整数(大写字母)

9

%e

指数表示法(小写'e')

10

%E

指数表示法(UPPERcase'E')

11

%f

浮动点实数

12

%g

%f和%e中的较短者

13

%G

%f和%E中较短的

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

Sr.No.符号&功能
1

*

参数指定宽度或精度

2

 -  

左对齐

3

+

显示标志

4

< sp>

在正数之前留空格

5

添加八进制前导零('0')或十六进制前导'0x'或'0X',具体取决于是使用'x'还是'X'.

6

0

从左边用零填充(而不是空格)

7

'%%'留下一个文字'%

8

(var)

映射变量(字典参数)

9

mn

m是最小值总宽度和n是小数点后显示的位数(如果应用)

Triple Quotes

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

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

 
#!/usr/bin/python3 
 para_str ="""这是一个长字符串,由
几行和不可打印的字符组成作为
 TAB(\t),它们会在显示时显示出来. 
字符串中的NEWLINE,无论是明确给出如
这在括号[\ n]中,还是只是
内的NEWLINE,变量赋值也会出现. 
"""
 print(para_str)

执行上述代码时,会产生以下结果.请注意每一个特殊字符已转换为其打印格式,直到"up."和结束三个引号之间的字符串末尾的最后一个NEWLINE.另请注意,NEWLINE出现在行尾的显式回车符或者它的转义代码(\ n) :

#!/usr/bin/python3

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)

原始字符串根本不会将反斜杠视为特殊字符.你放入原始字符串的字符保持你写的方式:

#!/usr/bin/python3

print ('C:\\nowhere')

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

C:\nowhere

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

#!/usr/bin/python3

print (r'C:\\nowhere')

当以上代码被执行,它产生以下结果 :

C:\\nowhere

Unicode字符串

在Python 3中,所有字符串都用Unicode表示.在Python 2中,内部存储为8位ASCII,因此需要附加'你要把它变成Unicode.现在不再需要了.

内置字符串方法

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

Sr.No.方法&描述
1capitalize()

首字母大写字母

2center(width,fillchar)

返回用 fillchar 填充的字符串,原始字符串居中于 width 列.

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))

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

7expandtabs(tabsize = 8)

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

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

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

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

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

10isalnum()

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

11isalpha()

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

12isdigit()

如果string只包含数字,则返回true,否则返回false.

13islower()

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

14isnumeric()

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

15isspace()

如果string只包含空格字符,则返回true,否则返回false.

16istitle()

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

17isupper()

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

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'))

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

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

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

34strip([chars])

执行lstrip()和字符串上的rstrip()

35swapcase()

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

36title()

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

37translate(table,deletechars ="")

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

38upper ()

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

39zfill(width)

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

40isdecimal()

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