Python - 字符串

2023-09-17 22:14:54

在 Python 中,字符串是一种不可变的序列数据类型。它是括在单引号、双引号或三引号内的 Unicode 字符序列。

以下是 Python 中的有效字符串文字。

'This is a string in Python' # string in single quotes
"This is a string in Python" # string in double quotes
'''This is a string in Python''' # string in triple quotes
"""This is a string in Python""" # string in triple double-quotes

可以将字符串文本分配给变量,如下所示。

str1='This is a string in Python' 
print(str1)
str2="This is a string in Python" 
print(str2)

多行字符串必须嵌入在三引号中,如下所示。

str1='''This is 
the first
Multi-line string.
'''
print(str1)
str2="""This is
the second
Multi-line
string."""
print(str2)

如果字符串文本需要将双引号作为字符串的一部分嵌入,则应将其放在单引号中。 同样,如果字符串包含单引号作为字符串的一部分,则应用双引号编写。

str1='Welcome to "Python Tutorial" on python114.com'
print(str1)
str2="Welcome to 'Python Tutorial' on python114.com"
print(str2)

使用 len() 函数检索字符串的长度,如下所示。

greet='Hello'
n = len(greet) #returns 5

序列定义为项的有序集合。因此,字符串是字符的有序集合。 该序列使用索引,从零开始从中获取某个项目(如果是字符串的字符)。

greet='hello'
print(greet[0])
print(greet[1])
print(greet[2])
print(greet[3])
print(greet[4])
print(greet[5]) #IndexError: string index out of range

Python 也支持负索引,从 -(字符串长度)到 -1。

greet='hello'
print(greet[-5])
print(greet[-4])
print(greet[-3])
print(greet[-2])
print(greet[-1])
print(greet[0]) 

字符串是不可变的对象。因此,无法对其进行修改。 尝试在某个索引处分配不同的字符会导致错误。

greet='hello'
greet[0]='A' #TypeError:'str' object does not support item assignment

str Class

所有字符串都是 Python 中 str 类的对象。

greet='hello'
print(type(greet)) #output: <class 'str'>

使用 str() 函数将数字转换为字符串。

s = str(100)
print(s)  #'100'
s = str(-10)
print(s) #'-10'
s = str(True)
print(s) #'True'

转义序列(Escape Sequences)

转义字符用于调用序列中后续字符的替代实现。 在 Python 中,反斜杠用作转义字符。使用反斜杠字符,后跟要在字符串中插入的字符,例如 '包含引号,或"在字符串中包含双引号,如下所示。

str1='Welcome to 'Python Tutorial' on python114.com'
print(str1)
str2="Welcome to "Python Tutorial" on python114.com"
print(str2)

使用 rR 忽略字符串中的转义序列。

str1 = r'Welcome to 'Python Tutorial' on python114.com'
print(str1)

下表列出了 Python 中的转义序列。

Escape sequence描述例子
Backslash"HelloHi"
HelloHi
bBackspace"abbc"
ac
fForm feed
nNewline"hellonworld"
Hello
world
nnnOctal notation, where n is in the range 0-7'101'
A
Tab'Hello Python'
Hello    Python
xnnHexadecimal notation, where n is in the range 0-9, a-f, or A-F'x48x69'
Hi
onnOctal notation, where n is in the range 0-9"110151"
Hi

字符串运算符(String Operators)

显然,算术运算符不对字符串进行操作。但是,字符串处理有特殊的运算符。

运算符描述例子
+将第二个字符串追加到第一个字符串a='hello'
b='world'
a+b
#output: 'helloworld'
*连接同一字符串的多个副本a='hello'
a*3
#output: 'hellohellohello'
[]返回给定索引处的字符a = 'Python'
a[2]
#output: t
[ : ]获取由 : 符号分隔的两个索引操作数指定的范围内的字符a = 'Python'
a[0:2]
#output: 'Py'
in如果给定字符串中存在字符,则返回 truea = 'Python'
'x' in a #output: False
'y' in a #output: True
'p' in a #output: False
not in如果给定字符串中不存在字符,则返回 truea = 'Python'
'x' not in a #output: True
'y' not in a #output: False

字符串方法(String Methods)

函数描述
str.capitalize()返回字符串的副本,其第一个字符大写,其余字母为小写。
string.casefold()返回降低大小写字符串。它类似于 lower() 方法,但 casefold() 方法将更多字符转换为小写。
string.center()返回指定长度的新居中字符串,该字符串用指定的字符填充。最糟糕的字符是空间。
string.count()搜索(区分大小写)给定字符串中的指定子字符串,并返回一个整数,指示子字符串的出现次数。
string.endswith()如果字符串以指定的后缀(区分大小写)结尾,则返回 True,否则返回 False。
string.expandtabs()返回一个字符串,其中所有制表符 替换为一个或多个空格,具体取决于 之前的字符数和指定的制表符大小。
string.find()返回给定字符串中子字符串第一次出现的索引(区分大小写)。如果未找到子字符串,则返回 -1。
string.index()返回给定字符串中子字符串第一次出现的索引。
string.isalnum()如果字符串中的所有字符都是字母数字(字母或数字),则返回 True。如果不是,则返回 False。
string.isalpha()如果字符串中的所有字符都是字母(小写和大写),则返回 True;如果至少有一个字符不是字母,则返回 False。
string.isascii()如果字符串为空或字符串中的所有字符均为 ASCII,则返回 True。
string.isdecimal()如果字符串中的所有字符都是十进制字符,则返回 True。如果不是,则返回 False。
string.isdigit()如果字符串中的所有字符都是数字或数字的 Unicode 字符,则返回 True。如果不是,则返回 False。
string.isidentifier()检查字符串是否为有效的标识符字符串。如果字符串是有效的标识符,则返回 True,否则返回 False。
string.islower()检查给定字符串的所有字符是否都是小写的。如果所有字符都为小写,则返回 True,即使一个字符为大写,它也返回 False。
string.isnumeric()检查字符串的所有字符是否都是数字字符。如果所有字符都是数字,它将返回 True,即使一个字符是非数字,也会返回 False。
string.isprintable()如果给定字符串的所有字符都是可打印的,则返回 True。即使一个字符不可打印,它也返回 False。
string.isspace()如果给定字符串的所有字符都是空格,则返回 True。即使一个字符不是空格,它也返回 False。
string.istitle()检查每个单词的第一个字符是否为大写,其余字符是否为小写。如果字符串是标题大小写的,则返回 True;否则,它将返回 False。符号和数字将被忽略。
string.isupper()如果所有字符都大写,则返回 True;如果一个字符不是大写,则返回 False。
string.join()返回一个字符串,该字符串是字符串(在其上调用它)与指定可迭代对象的字符串元素作为参数的串联。
string.ljust()返回具有指定宽度的左对齐字符串。如果指定的宽度大于字符串长度,则字符串的剩余部分将用指定的填充字符填充。
string.lower()返回原始字符串的副本,其中所有字符都转换为小写。
string.lstrip()通过删除指定为参数的前导字符返回字符串的副本。
string.maketrans()返回一个映射表,该表将给定字符串中的每个字符映射到第二个字符串中相同位置的字符。此映射表与 translate() 方法一起使用,该方法将替换映射表中的字符。
string.partition()在指定的字符串分隔符 sep 参数第一次出现时拆分字符串,并返回一个包含三个元素的元组:分隔符前面的部分、分隔符本身和分隔符之后的部分。
string.replace()返回字符串的副本,其中子字符串的所有匹配项都替换为另一个子字符串。
string.rfind()返回给定字符串中指定子字符串的最高索引(子字符串的最后一次出现)。
string.rindex()返回给定字符串中子字符串最后一次出现的索引。
string.rjust()返回具有指定宽度的右对齐字符串。如果指定的宽度大于字符串长度,则字符串的剩余部分将用指定的填充字符填充。
string.rpartition()在指定的字符串分隔符 sep 参数的最后一次出现时拆分字符串,并返回一个包含三个元素的元组:分隔符之前的部分、分隔符本身和分隔符之后的部分。
string.rsplit()从指定的分隔符中拆分字符串,并返回包含字符串元素的列表对象。
string.rstrip()通过删除指定为参数的尾随字符返回字符串的副本。
string.split()从指定的分隔符中拆分字符串,并返回包含字符串元素的列表对象。
string.splitlines()在行边界处拆分字符串,并返回字符串中的行列表。
string.startswith()如果字符串以指定的前缀开头,则返回 True。如果不是,则返回 False。
string.strip()通过删除前导字符和尾随字符返回字符串的副本。
string.swapcase()返回字符串的副本,其中大写字符转换为小写,反之亦然。符号和字母将被忽略。
string.title()返回一个字符串,其中每个单词都以大写字符开头,其余字符为小写。
string.translate()返回一个字符串,其中每个字符都映射到转换表中的相应字符。
string.upper()返回大写的字符串。符号和数字不受影响。
string.zfill()返回字符串的副本,其中左边填充了"0"字符。它在字符串的开头添加零 (0),直到字符串的长度等于指定的宽度参数。

本文内容总结: