您的位置:

7. Python 字符串

Python 字符串

更新:

字符串输出

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

以下是 Python 中的有效字符串:

'This is a string in Python'
"This is a string in Python"
'''This is a string in Python'''
"""This is a string in Python"""

字符串可以赋给变量,如下所示。

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

输出:

This is a string in Python
This is a string in Python

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

str1='''多行(三重单引号)
字符串
Multi-line
string.
'''
print(str1)

str2="""多行(三重双引号)
字符串
Multi-line
string."""
print(str2)

输出:

多行(三重单引号)
字符串
Multi-line
string.

多行(三重双引号)
字符串
Multi-line
string.

如果字符串中含有双引号,则输出字符串时,要用单引号包围进行输出。反之,如果字符串中含有单引号,则需要用双引号包围进行输出。

如果同时使用单引号或者双引号,则需要将,字符串内部的引号进行转移。

str1='学习python就来"www.fke6.com"'
print(str1)

str2="学习python就来'www.fke6.com'"
print(str2)

输出:

Welcome to 学习python就来"www.fke6.com"
Welcome to 学习python就来'www.fke6.com'


下面来看下在同时使用单引号或者双引号时,如何输出字符串

str3='学习python就来'www.fke6.com''
print(str3)

#此时程序会报语法错误:
#SyntaxError: invalid syntax

#正确写法:
str3='学习python就来\'www.fke6.com\''
str4="学习python就来\"www.fke6.com\""

字符串索引

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

>>> str1='nihao'
>>> len(str1)
5

序列被定义为有序的项目集合。因此,字符串是字符的有序集合。该序列使用一个索引,从零开始从其中获取某个项目(在字符串的情况下是一个字符)。

>>> str1='nihao'
>>> str1[0]
'n'
>>> str1[1]
'i'
>>> str1[2]
'h'
>>> str1[3]
'a'
>>> str1[4]
'o'
>>> str1[5] # throw error if index > len(string)-1
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
str1[5]
IndexError: string index out of range

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

>>> str2='hello'
>>> str2[-5]
'n'
>>> str2[-4]
'i'
>>> str2[-3]
'h'
>>> str2[-2]
'a'
>>> str2[-1]
'o'

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

>>> str3='nihao'
>>> str3[0]='A'
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
str3[0]='A'
TypeError: 'str' object does not support item assignment

字符串类

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

>>> greet='hello'
>>> type(greet)
<class 'str'>

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

>>> str(100)
'100'
>>> str(-10)
'-10'
>>> str(True)
'True'

转义序列

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

str1='Welcome to \'Python Tutorial\' on TutorialsTeacher'
print(str1)

str2="Welcome to \"Python Tutorial\" on TutorialsTeacher"
print(str2)

Output:

Welcome to 'Python Tutorial' from TutorialsTeacher
Welcome to "Python Tutorial" on TutorialsTeacher

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

str1=r'Welcome to \'Python Tutorial\' on TutorialsTeacher'
print(str1)

Output:

Welcome to \'Python Tutorial\' from TutorialsTeacher

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

转义序列 描述 例子
\\ 反斜杠 >>> "你好\\你好"
你好\你好
\b 退格 >>> "ab\bc"
交流
\F 换页
\n 新队 >>> "hello\nworld"
你好
世界
\nnn 八进制表示法,其中 n 在 0-7 范围内 >>> '\101'
一个
\t 标签 >>> 'Hello\tPython'
你好 Python
\xnn 十六进制表示法,其中 n 在 0-9、af 或 AF 范围内 >>> '\x48\x69'
你好
\onn 八进制表示法,其中 n 在 0-9 范围内 >>> "\110\151"
你好

T2【你好】 T3】世界 | | \nnn | 八进制记数法,其中 n 在 0-7 范围内 | > > > ' \101' A | | \t | 标签 | > > > ' Hello \ tPython ' Hello Python | | \xnn | 十六进制表示法,其中 n 在 0-9、a-f 或 A-F 的范围内 | > > > ' \x48\x69' 嗨 | | \ n | 八进制记数法,其中 n 在 0-9 范围内 | > > > " \110\151" 嗨 |

字符串运算符

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

操作员 描述 例子
+ 将第二个字符串追加到第一个字符串之后 > > > a= '你好'

字符串方法

方法 描述
str .大写()T2】 返回字符串的副本,其第一个字符大写,其余字母小写。
弦折()T2】 返回一个小写字符串。它类似于 lower()方法,但 casefold()方法将更多字符转换为小写。
弦.中()T2】 返回一个新的指定长度的居中字符串,该字符串用指定的字符填充。最可怕的特征是空间。
弦长()T2】 搜索(区分大小写)给定字符串中的指定子字符串,并返回一个指示该子字符串出现的整数。
string . endcom() 如果字符串以指定的后缀(区分大小写)结尾,则返回真,否则返回假。
T2 根据前面的字符数和指定的制表符大小,返回一个字符串,所有制表符\t 都用一个或多个空格替换。
string.find() 返回给定字符串中第一个出现的子字符串的索引(区分大小写)。如果没有找到子字符串,它将返回-1。
string . index()T2】 返回给定字符串中第一个出现的子字符串的索引。
string . is lnum() 如果字符串中的所有字符都是字母数字(字母或数字),则返回 True。如果不是,则返回假。
string.isalpha() 如果字符串中的所有字符都是字母(小写和大写),则返回 True 如果至少有一个字符不是字母,则返回 False。
【string . isascii() 如果字符串为空或字符串中的所有字符都是 ASCII 字符,则返回 True。
string . is descimal()T2】 如果字符串中的所有字符都是十进制字符,则返回 True。如果不是,则返回假。
string . isdigt() 如果字符串中的所有字符都是数字或数字的 Unicode 字符,则返回 True。如果不是,则返回假。
string . isi identifier() 检查字符串是否是有效的标识符字符串。如果字符串是有效的标识符,则返回真,否则返回假。
string . ispower() 检查给定字符串的所有字符是否都是小写的。如果所有字符都是小写,则返回真;如果一个字符是大写,则返回假。
string . is numeric()T2】 检查字符串中的所有字符是否都是数字字符。如果所有字符都是数字,它将返回真,即使一个字符是非数字,它也将返回假。
string . is printable()T2】 如果给定字符串的所有字符都是可打印的,则返回 True。即使有一个字符不可打印,它也会返回 False。
string . isspace()T2】 如果给定字符串的所有字符都是空格,则返回 True。即使一个字符不是空白,它也会返回 False。
string . isttle() 检查每个单词的第一个字符是否大写,其余字符是否小写。如果字符串有标题,则返回真;否则,它返回 False。符号和数字被忽略。
string.isupper() 如果所有字符都是大写,则返回真;如果一个字符不是大写,则返回假。
string . join()T2】 返回一个字符串,它是字符串(在其上调用它)与指定 iterable 的字符串元素作为参数的串联。
字符串.光()T2 返回指定宽度的左对齐字符串。如果指定的宽度大于字符串长度,则字符串的剩余部分用指定的 fillchar 填充。
弦长()T2】 返回原始字符串的副本,其中所有字符都转换为小写。
string . lsrip() 通过删除指定为参数的前导字符返回字符串的副本。
string.maketrans() 返回一个映射表,该表将给定字符串中的每个字符映射到同一位置的第二个字符串中的字符。此映射表与 translate()方法一起使用,该方法将根据映射表替换字符。
弦.分区()T2】 在第一次出现指定的字符串分隔符 sep 参数时拆分字符串,并返回包含三个元素的元组,即分隔符之前的部分、分隔符本身和分隔符之后的部分。
string . replace()T2】 返回字符串的副本,其中一个子字符串的所有匹配项都被另一个子字符串替换。
string . rfnd() 返回给定字符串中指定子字符串的最高索引(子字符串的最后一次出现)。
string . rinex() 返回给定字符串中最后一次出现的子字符串的索引。
string . rust() 返回指定宽度的右对齐字符串。如果指定的宽度大于字符串长度,则字符串的剩余部分用指定的填充字符填充。
string . rpartition()T2】 在指定字符串分隔符 sep 参数的最后一次出现处拆分字符串,并返回包含三个元素的元组,即分隔符之前的部分、分隔符本身和分隔符之后的部分。
string . rslit() 从指定的分隔符拆分字符串,并返回包含字符串元素的列表对象。
string . rstrip()T2】 通过删除指定为参数的尾随字符,返回字符串的副本。
string . split()T2】 从指定的分隔符拆分字符串,并返回包含字符串元素的列表对象。
string . splitlines()T2】 在行边界处拆分字符串,并返回字符串中的行列表。
string.startswith() 如果字符串以指定的前缀开头,则返回 True。如果不是,则返回假。
string . strip()T2】 通过删除前导和尾随字符返回字符串的副本。
string.swapcase() 返回字符串的副本,大写字符转换为小写字符,反之亦然。符号和字母被忽略。
string.title() 返回一个字符串,其中每个单词以大写字符开头,其余字符为小写字符。
string.translate() 返回一个字符串,其中每个字符都映射到翻译表中相应的字符。
弦上()T2】 返回大写的字符串。符号和数字不受影响。
张弦()T2】 返回左侧填充有“0”字符的字符串副本。它在字符串的开头添加零(0),直到字符串的长度等于指定的宽度参数。