Python - 字符串



Python 中,字符串Unicode 字符 的不可变序列。每个字符根据 Unicode 标准都有一个唯一的 数值。但是,整个序列即使所有字符都是数字,也没有任何数值。为了区分字符串与数字和其他标识符,字符序列在其字面表示中包含在单引号、双引号或三引号内。因此,1234 是一个数字(整数),但 '1234' 是一个字符串。

创建 Python 字符串

只要包含相同的字符序列,单引号双引号三引号就没有区别。因此,以下字符串表示是等效的。

示例

>>> 'Welcome To TutorialsPoint'
'Welcome To TutorialsPoint'
>>> "Welcome To TutorialsPoint"
'Welcome To TutorialsPoint'
>>> '''Welcome To TutorialsPoint'''
'Welcome To TutorialsPoint'
>>> """Welcome To TutorialsPoint"""
'Welcome To TutorialsPoint'

查看以上语句,可以清楚地看到,Python 内部将字符串存储为包含在单引号中。

在旧版本中,字符串在内部存储为 8 位 ASCII,因此需要附加 'u' 以使其成为 Unicode。从 Python 3 开始,所有字符串都以 Unicode 表示。因此,现在不再需要在字符串后添加 'u'。

访问字符串中的值

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

要访问子字符串,请使用方括号进行切片,并使用索引或索引来获取子字符串。例如 -

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

更新字符串

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

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

当以上代码执行时,会产生以下结果 -

Updated String :-  Hello Python

访问我们的 Python - 修改字符串 教程,以了解有关更新/修改字符串的更多信息。

转义字符

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

一个 转义字符 会被解释;在单引号和双引号字符串中。

反斜杠表示法 十六进制字符 描述
\a 0x07 响铃或警报
\b

0x08 退格键
\cx Ctrl-x
\C-x Ctrl-x
\e 0x1b Escape(转义)
\f 0x0c 换页
\M-\C-x Meta-Ctrl-x
\n 0x0a 换行
\nnn 八进制表示法,其中n的范围是0到7
\r 0x0d 回车
\s 0x20 空格
\t 0x09 Tab(制表符)
\v 0x0b 垂直制表符
\x 字符x
\xnn 十六进制表示法,其中n的范围是0到9、a到f或A到F

字符串特殊运算符

假设字符串变量a存储'Hello',变量b存储'Python',则:

运算符 描述 示例
+ 连接 - 将运算符两侧的值连接起来 a + b 将得到HelloPython
* 重复 - 创建新的字符串,连接多个相同字符串的副本 a*2 将得到-HelloHello
[] 切片 - 获取给定索引处的字符 a[1] 将得到e
[ : ]范围切片 - 获取给定范围内的字符 a[1:4] 将得到ell
in成员关系 - 如果字符存在于给定字符串中,则返回TrueH in a 将得到1
not in 成员关系 - 如果字符不存在于给定字符串中,则返回True M not in a 将得到1
r/R 原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与普通字符串完全相同,除了原始字符串运算符“r”,它位于引号之前。“r”可以是小写(r)或大写(R),并且必须放置在第一个引号标记的正前方。 print r'\n' 输出 \n,print R'\n' 输出 \n
% 格式化 - 执行字符串格式化 参见下一节

字符串格式化运算符

Python 最酷的功能之一是字符串格式化运算符 %。此运算符是字符串独有的,弥补了缺少 C 的 printf() 系列函数的不足。下面是一个简单的示例:

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

<sp>

在正数前留一个空格

5

#

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

6

0

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

7

%

'%%' 将为您提供单个文字'%'

8

(var)

映射变量(字典参数)

9

m.n.

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

访问我们的 Python - 字符串格式化 教程,了解各种格式化字符串的方法。

Python 字符串中的双引号

如果要将某些文本作为字符串的一部分嵌入双引号中,则字符串本身应放在单引号中。要嵌入单引号文本,字符串应写成双引号。

示例

var = 'Welcome to "Python Tutorial" from TutorialsPoint'
print ("var:", var)

var = "Welcome to 'Python Tutorial' from TutorialsPoint"
print ("var:", var)

这将产生以下输出

var: Welcome to "Python Tutorial" from TutorialsPoint
var: Welcome to 'Python Tutorial' from TutorialsPoint

三引号

要形成一个带有三引号的字符串,可以使用三个单引号或三个双引号 - 两个版本相似。

示例

var = '''Welcome to TutorialsPoint'''
print ("var:", var)

var = """Welcome to TutorialsPoint"""
print ("var:", var)

这将产生以下输出

var: Welcome to TutorialsPoint
var: Welcome to TutorialsPoint

Python 多行字符串

三引号字符串可用于形成多行字符串。

示例

var = '''
Welcome To
Python Tutorial
from TutorialsPoint
'''
print ("var:", var)

这将产生以下输出

var:
Welcome To
Python Tutorial
from TutorialsPoint

字符串的算术运算符

字符串是非数值数据类型。显然,我们不能对字符串操作数使用算术运算符。在这种情况下,Python 会引发 TypeError。

print ("Hello"-"World")

执行上述程序时,将生成以下错误:

>>> "Hello"-"World"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'

获取 Python 字符串的类型

Python 中的字符串是 str 类的对象。可以使用 type() 函数进行验证。

示例

var = "Welcome To TutorialsPoint"
print (type(var))

这将产生以下输出

<class 'str'>

内置字符串方法

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

序号 方法及描述
1 capitalize()

将字符串的首字母大写。

2 casefold()

将字符串中的所有大写字母转换为小写。类似于 lower(),但也可以处理 UNICODE 字符。

3 center(width, fillchar)

返回一个用空格填充的字符串,其中原始字符串居中到总共 width 列。

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

计算 str 在字符串中出现的次数,如果给定起始索引 beg 和结束索引 end,则计算其在字符串的子字符串中出现的次数。

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

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

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

返回字符串的编码字符串版本;如果出错,默认情况下会引发 ValueError,除非 errors 与 'ignore' 或 'replace' 一起给出。

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

确定字符串或字符串的子字符串(如果给定起始索引 beg 和结束索引 end)是否以 suffix 结尾;如果这样,则返回 true,否则返回 false。

8 expandtabs(tabsize=8)

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

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

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

10 format(*args, **kwargs)

此方法用于格式化当前字符串值。

11 format_map(mapping)

此方法也用于格式化当前字符串,唯一的区别是它使用映射对象。

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

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

13 isalnum()

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

14 isalpha()

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

15 isascii()

如果字符串中的所有字符都来自 ASCII 字符集,则返回 True。

16 isdecimal()

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

17 isdigit()

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

18 isidentifier()

检查字符串是否为有效的 Python 标识符。

19 islower()

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

20 isnumeric()

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

21 isprintable()

检查字符串中的所有字符是否都可打印。

22 isspace()

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

23 istitle()

如果字符串已正确“标题化”,则返回 true,否则返回 false。

24 isupper()

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

25 join(seq)

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

26 ljust(width[, fillchar])

返回一个用空格填充的字符串,其中原始字符串左对齐到总共 width 列。

27 lower()

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

28 lstrip()

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

29 maketrans()

返回一个要在 translate 函数中使用的转换表。

30 partition()

在分隔符第一次出现的位置将字符串拆分为三个字符串元组。

31 removeprefix()

删除前缀字符串后返回字符串。

32 removesuffix()

删除后缀字符串后返回字符串。

33 replace(old, new [, max])

将字符串中所有出现的 old 替换为 new,或者如果给定 max,则最多替换 max 次出现。

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

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

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

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

36 rjust(width,[, fillchar])

返回一个用空格填充的字符串,其中原始字符串右对齐到总共 width 列。

37 rpartition()

在分隔符最后一次出现的位置将字符串拆分为三个字符串元组。

38 rsplit()

从末尾拆分字符串并返回子字符串列表。

39 rstrip()

删除字符串的所有尾随空白。

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

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

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

在所有(或 num)换行符处拆分字符串,并返回每个行的列表,其中已删除换行符。

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

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

43 strip([chars])

对字符串执行 lstrip() 和 rstrip()。

44 swapcase()

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

45 title()

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

46 translate(table, deletechars="")

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

47 upper()

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

48 zfill (width)

返回用零从左侧填充到总共 width 个字符的原始字符串;用于数字,zfill() 保留给定的任何符号(减去一个零)。

字符串的内置函数

以下是我们可以与字符串一起使用的内置函数:

序号 函数及描述
1 len(list)

返回字符串的长度。

2 max(list)

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

3 min(list)

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

广告