Python3字符串


Strings are amongst the most popular types in Python. We can create them simply by enclosing characters in quotes. Python treats single quotes the same as double quotes. Creating strings is as simple as assigning a value to a variable. For example:

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

访问字符串中的值


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

要访问子字符串,请使用方括号与一个或多个索引一起切​​片以获得你的子字符串。例如:

#!/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

转义字符


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

转义字符被解释;用单引号和双引号引起来。

反斜杠符号 十六进制字符 描述
\a 0x07 铃声或警报
\b 0x08 退格键
\cx Control-x
\C-x Control-x
\e 0x1b Escape
\f 0x0c Formfeed
\M-\C-x 元控制x
\n 0x0a Newline
\nnn 八进制表示法,其中n在0.7范围内
\r 0x0d 回车
\s 0x20 Space
\t 0x09 Tab
\v 0x0b 垂直标签
\x 字元x
\xnn 十六进制表示法,其中n在0.9,a.f或A.F范围内

String Special Operators


假设字符串变量 a 持有“你好”和变量 b 持有“ Python”,则:

Operator 描述 Example
+ 串联-在运算符的任一侧添加值 a + b将给HelloPython
* 重复-创建新字符串,将同一字符串的多个副本连接在一起 a * 2将给出-HelloHello
[] 切片-根据给定的索引给出字符 a [1]将给e
[ : ] 范围切片-提供给定范围内的字符 a [1:4]会给ell
in 成员资格-如果给定字符串中存在字符,则返回true H会给1
not in 成员资格-如果给定字符串中不存在字符,则返回true M不在会给1
r/R 原始字符串-禁止转义字符的实际含义。原始字符串的语法与普通字符串的语法完全相同,唯一不同的是原始字符串运算符,在引号前加上字母“ r”。 “ r”可以是小写(r)或大写(R),并且必须放在第一个引号之前。 打印r'\ n'打印\ n和打印R'\ n'打印\ n
% 格式-执行字符串格式化 见下一节

String Formatting Operator


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!

这是可以与%一起使用的完整符号集的列表:

序号 格式符号和转换
1

%c

特点

2

%s

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

3

%i

有符号十进制整数

4

%d

有符号十进制整数

5

%u

无符号十进制整数

6

%o

八进制整数

7

%x

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

8

%X

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

9

%e

指数符号(小写的“ e”)

10

%E

指数表示法(使用大写字母“ E”)

11

%f

浮点实数

12

%g

%f和%e中的较短者

13

%G

%f和%E中的较短者

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

序号 符号与功能
1

*

参数指定宽度或精度

2

-

左对齐

3

+

显示标志

4

在正数之前留一个空格

5

#

根据使用的是'x'还是'X',添加八进制前导零('0')或十六进制前导'0x'或'0X'。

6

0

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

7

%

'%%'使你只有一个文字'%'

8

(var)

映射变量(字典参数)

9

m.n.

m是最小总宽度,n是小数点后要显示的位数(如果有)。

三引号


通过允许字符串跨越多行,包括逐字换行符,TAB和任何其他特殊字符,Python的三重引号得以解决。

三重引号的语法包含三个连续的 单人或双人 quotes.

#!/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)

执行以上代码后,将产生以下结果。请注意,如何将每个特殊字符都转换为其印刷形式,一直到“ up”之间的字符串末尾的最后一个NEWLINE。并关闭三重引号。还要注意,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/python3

print ('C:\\nowhere')

执行以上代码后,将产生以下结果:

C:\nowhere

现在,让我们使用原始字符串。我们将表达 '表达' 如下:

#!/usr/bin/python3

print (r'C:\\nowhere')

执行以上代码后,将产生以下结果:

C:\\nowhere

Unicode字串


在Python 3中,所有字符串均以Unicode表示。在Python 2中,内部存储为8位ASCII,因此需要附加'u'使其成为Unicode。现在不再需要。

内置字符串方法

Python包含以下内置方法来处理字符串:

序号 方法与说明
1 大写()

大写字符串的第一个字母

2 中心(宽度,填充字符)

返回填充有字符串的字符串 fillchar 原始字符串居中于总共 width columns.

3 count(str,beg = 0,end = len(字符串))

计算给定起始索引beg和终止索引end时,str在字符串或字符串的子字符串中出现的次数。

4 解码(编码='UTF-8',错误='严格')

使用注册用于编码的编解码器对字符串进行解码。编码默认为默认字符串编码。

5 编码(编码='UTF-8',错误='严格')

返回字符串的编码字符串版本;如果有错误,则默认为引发ValueError,除非使用'ignore'或'replace'给出错误。

6 endwith(后缀,beg = 0,end = len(字符串))

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

7 expandtabs(tabsize = 8)

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

8 find(str,beg = 0 end = len(字符串))

如果给定了起始索引beg和终止索引end,则确定str是在字符串中还是在字符串的子字符串中出现,如果找到则返回索引,否则返回-1。

9 index(str,beg = 0,end = len(字符串))

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

10 isalnum()

如果string至少包含1个字符,并且所有字符均为字母数字,则返回true;否则返回false。

11 isalpha()

如果string至少包含1个字符,并且所有字符均为字母,则返回true;否则返回false。

12 isdigit()

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

13 islower()

如果string至少包含1个大小写字符,并且所有大小写字符均为小写,则返回true;否则返回false。

14 isnumeric()

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

15 isspace()

如果字符串仅包含空格字符,则返回true,否则返回false。

16 istitle()

如果将字符串正确地“加标题”,则返回true,否则返回false。

17 isupper()

如果string至少包含一个大小写字符,并且所有大小写字符均为大写,则返回true;否则返回false。

18 加入(seq)

使用分隔符字符串将序列seq中元素的字符串表示形式合并(连接)为字符串。

19 len(字符串)

返回字符串的长度

20 ljust(width [,fillchar])

返回一个带空格的字符串,其原始字符串左对齐为width列的总和。

21 lower()

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

22 lstrip()

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

23 maketrans()

返回要在翻译功能中使用的翻译表。

24 max(str)

返回字符串str中的最大字母字符。

25 min(str)

返回字符串str中的最小字母字符。

26 替换(旧的,新的[,最大])

如果给定了最大值,则用新的或最多最大的出现次数替换字符串中所有旧的出现次数。

27 rfind(str,beg = 0,end = len(字符串))

与find()相同,但向后搜索字符串。

28 rindex(str,beg = 0,end = len(字符串))

与index()相同,但向后搜索字符串。

29 rjust(width,[,fillchar])

返回一个带空格的字符串,原始字符串右对齐为width列的总和。

30 rstrip()

删除字符串的所有结尾空格。

31 split(str =“”,num = string.count(str))

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

32 分割线(num = string.count('\ n'))

分割所有(或num个)NEWLINE字符串,并返回删除了NEWLINE的每一行的列表。

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

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

34 条([字符])

对字符串同时执行lstrip()和rstrip()

35 swapcase()

转换字符串中所有字母的大小写。

36 title()

返回字符串的“ titlecased”版本,即所有单词均以大写字母开头,其余均为小写字母。

37 翻译(表格,deletechars =“”)

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

38 upper()

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

39 zfill(宽度)

返回原始字符串,将其用零填充到总的宽度字符;用于数字,zfill()保留给定的任何符号(小于1的零)。

40 isdecimal()

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