字符串是 Python编程中的一种数据结构,表示一系列字符。它是一种不可变的数据类型,这意味着一旦创建了字符串,就不能更改它。Python字符串广泛用于许多不同的应用程序中,如存储和操作文本数据,表示姓名、地址和其他可以表示为文本的数据类型。
本文大纲 {#本文大纲}
- Python字符串是什么?
- Python如何创建字符串?
- 访问Python字符串中的字符
- Python字符串切片
- Python字符串反转
- 删除/更新字符串
- Python中的转义序列
- Python字符串格式化
- 有用的Python字符串操作
- Python字符串常量
Python字符串是什么? {#Python字符串是什么?}
Python编程没有字符数据类型,单个字符只是长度为1的字符串,下面示例是 Python字符串的语法:
Python字符串数据类型的语法 {#Python字符串数据类型的语法}
|-----------|-------------------------------------------|
| 1
| string_variable = 'Hello, world!'
|
Python字符串数据类型的示例 {#Python字符串数据类型的示例}
|---------------|-------------------------------------------------------------------------------------------------|
| 1 2 3
| string_0 = "A Computer Science portal for Ptthon" print(string_0) print(type(string_0))
|
输出:
|-------------|------------------------------------------------------------|
| 1 2
| A Computer Science portal for Ptthon <class 'str'>
|
Python如何创建字符串 {#Python如何创建字符串}
在Python中,可以使用单引号(' ')、双引号(" ")或三重引号(""" """)来创建字符串。
下面我们通过几个示例来让展示 在Python中是如何定义字符串或如何编写字符串。
在这个示例中,我们将演示创建 Python字符串的不同方式。我们将使用单引号、双引号和三重双引号来创建字符串。三重引号可以用于声明 Python中的多行字符串。
|---------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # 使用单引号创建字符串 String1 = 'Welcome to the Python World' print("使用单引号创建的字符串: ") print(String1) # 使用双引号创建字符串 String1 = "I'm a Python" print("\n使用双引号创建的字符串: ") print(String1) # 使用三重引号创建字符串 String1 = '''I'm a Python and I live in a world of "Python"''' print("\n使用三重引号创建的字符串: ") print(String1) # 使用三重引号创建多行字符串 String1 = '''Python For Life''' print("\n创建多行字符串: ") print(String1)
|
输出:
|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10
| 使用单引号创建的字符串: Welcome to the Python World 使用双引号创建的字符串: I'm a Python 使用三重引号创建的字符串: I'm a Python and I live in a world of "Python" 创建多行字符串: Python For Life
|
访问Python字符串中的字符 {#访问Python字符串中的字符}
在 Python中,可以使用索引方法访问字符串的单个字符。索引用于使用负地址引用从字符串的后面访问字符,例如 -1 是指最后一个字符,-2 是指倒数第二个字符,依此类推。
访问超出范围的索引将导致 IndexError。只有整数可以作为索引传递,浮点数或其他类型将导致 TypeError。
Python字符串索引 {#Python字符串索引}
Python字符串正索引 {#Python字符串正索引}
在这个示例中,我们将在Python编程中定义一个字符串,并使用正索引访问其字符。第0个元素将是字符串的第一个字符。
|-------------------|-------------------------------------------------------------------------------------------------|
| 1 2 3 4 5
| String1 = "Hello" print("初始字符串: ", String1) # 打印第一个字符 print("字符串的第一个字符是: ", String1[0])
|
输出:
|-------------|--------------------------------------|
| 1 2
| 初始字符串: Hello 字符串的第一个字符是: H
|
Python字符串负索引 {#Python字符串负索引}
在这个示例中,我们将使用负索引访问其字符。-3元素是字符串的倒数第三个字符。
|-------------------|----------------------------------------------------------------------------------------------------|
| 1 2 3 4 5
| String1 = "Hello" print("初始字符串: ", String1) # 打印最后一个字符 print("字符串的最后一个字符是: ", String1[-3])
|
输出:
|-------------|---------------------------------------|
| 1 2
| 初始字符串: Hello 字符串的最后一个字符是: e
|
Python字符串切片 {#Python字符串切片}
在Python编程教程中,字符串切片方法用于访问字符串中的一系列字符。字符串切片使用切片操作符,即冒号(:)。使用此方法时要记住的一点是,切片后返回的字符串包含起始索引处的字符,但不包含结束索引处的字符。
在这个示例中,我们将使用字符串切片方法从原始字符串中提取子字符串。[3:12]表示字符串切片将从字符串的第3个索引开始到第12个索引结束(不包括第12个字符)。我们也可以在字符串切片中使用负索引。
|------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12
| # 创建一个字符串 String1 = "Hello,Python" print("初始字符串: ") print(String1) # 打印第3到第5个字符 print("\n从第3到第5个字符的切片: ") print(String1[3:5]) # 打印第3到倒数第2个字符之间的字符 print("\n从第3到倒数第2个字符之间的切片: ") print(String1[3:-2])
|
输出:
|---------------------|--------------------------------------------------------------------|
| 1 2 3 4 5 6
| 初始字符串: Hello 从第3到第12个字符的切片: lo, 从第3到倒数第2个字符之间的切片: lo,Pytho
|
Python字符串反转 {#Python字符串反转}
在Python编程教程中,通过访问字符串中的字符,我们还可以在Python编程中反转字符串。我们可以使用字符串切片方法反转字符串。
在这个示例中,我们将通过访问索引来反转字符串。我们没有指定切片的前两个部分,这表示我们正在考虑整个字符串,从起始索引到结束索引。
|---------------|---------------------------------------------------|
| 1 2 3
| # 反转字符串的程序 gfg = "hello" print(gfg[::-1])
|
输出:
|-----------|---------------|
| 1
| olleh
|
使用内置的反转函数 {#使用内置的反转函数}
我们还可以使用内置的 join和 reversed函数来反转字符串,并将字符串作为参数传递给 reversed()函数。
|-----------------------|---------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7
| # 反转字符串的程序 gfg = "hello" # 使用reversed和join函数反转字符串 gfg = "".join(reversed(gfg)) print(gfg)
|
输出:
|-----------|---------------|
| 1
| olleh
|
删除/更新字符串 {#删除-更新字符串}
在Python中,不允许更新或删除字符串中的字符。这将导致错误,因为字符串不支持项目赋值或项目删除。虽然可以使用内置的del关键字删除整个字符串。这是因为字符串是不可变的,因此一旦分配了字符串,就不能更改其元素。只能重新分配新的字符串给相同的名称。
更新字符 {#更新字符}
可以通过首先将字符串转换为Python列表,然后更新列表中的元素来更新Python中的字符。由于列表是可变的,我们可以更新字符,然后使用Python字符串join()方法将列表转换回字符串。
另一种方法是使用字符串切片方法。切片字符串直到要更新的字符,然后添加新字符,最后通过字符串切片再次添加字符串的其他部分。
示例: {#示例:}
在这个示例中,我们使用列表和字符串切片方法来更新字符。我们将String1转换为列表,改变其特定元素的值,然后使用Python字符串join()方法将其转换回字符串。
在字符串切片方法中,我们将字符串切片到要更新的字符,连接新字符,最后连接字符串的其余部分。
|------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # Python程序更新字符串字符 String1 = "Hello, I'm a Python" print("初始字符串: ") print(String1) # 更新字符串的字符 ## 由于Python字符串是不可变的,它们不直接支持项目更新 ### 有以下两种方法 #1 list1 = list(String1) list1[2] = 'p' String2 = ''.join(list1) print("\n更新第2个索引处的字符: ") print(String2) #2 String3 = String1[0:2] + 'p' + String1[3:] print(String3)
|
输出:
|-------------------|-----------------------------------------------------------------------------------------|
| 1 2 3 4 5
| 初始字符串: Hello, I'm a Python 更新第2个索引处的字符: Hello, I'm a Python Hello, I'm a Python
|
更新整个字符串 {#更新整个字符串}
在Python编程中,由于Python字符串的不可变性,我们无法更新现有字符串。我们只能将一个完全新值分配给具有相同名称的变量。
示例: {#示例:-1}
在这个示例中,我们首先为'String1'分配一个值,然后通过分配一个完全不同的值来更新它。我们只是改变了它的引用。
|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9
| # Python程序更新整个字符串 String1 = "Hello, I'm a Python" print("初始字符串: ") print(String1) # 更新字符串 String1 = "Welcome to the Python World" print("\n更新后的字符串: ") print(String1)
|
输出:
|-----------------|-------------------------------------------------------------------------|
| 1 2 3 4
| 初始字符串: Hello, I'm a Python 更新后的字符串: Welcome to the Python World
|
删除字符 {#删除字符}
Python字符串是不可变的,这意味着我们不能删除其中的字符。当我们尝试使用del关键字删除字符时,会生成错误。
|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8
| # Python程序删除字符串字符 String1 = "Hello, I'm a Python" print("初始字符串: ") print(String1) print("删除第2个索引处的字符: ") del String1[2] print(String1)
|
输出:
|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7
| 初始字符串: Hello, I'm a Python 删除第2个索引处的字符: Traceback (most recent call last): File "e:\GFG\Python codes\Codes\demo.py", line 9, in <module> del String1[2] TypeError: 'str' object doesn't support item deletion
|
但使用切片,我们可以从原始字符串中删除字符并将结果存储在新字符串中。
示例: {#示例:-2}
在这个示例中,我们首先将字符串切片到要删除的字符,然后连接从删除字符开始的剩余字符串。
|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9
| # Python程序删除字符串中的字符 String1 = "Hello, I'm a Python" print("初始字符串: ") print(String1) # 删除字符串中的字符 String2 = String1[0:2] + String1[3:] print("\n删除第2个索引处的字符: ") print(String2)
|
输出:
|-----------------|--------------------------------------------------------------------|
| 1 2 3 4
| 初始字符串: Hello, I'm a Python 删除第2个索引处的字符: Helo, I'm a Python
|
删除整个字符串 {#删除整个字符串}
在Python编程中,可以使用del关键字删除整个字符串。此外,如果我们尝试打印字符串,这将产生错误,因为字符串已被删除且无法打印。
|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9
| # Python程序删除整个字符串 String1 = "Hello, I'm a Python" print("初始字符串: ") print(String1) # 使用del关键字删除字符串 del String1 print("\n删除整个字符串: ") print(String1)
|
错误:
|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4
| Traceback (most recent call last): File "/home/e4b8f2170f140da99d2fe57d9d8c6a94.py", line 12, in print(String1) NameError: name 'String1' is not defined
|
Python中的转义序列 {#Python中的转义序列}
在打印包含单引号和双引号的字符串时会导致SyntaxError,因为字符串已经包含单引号和双引号,因此无法使用其中任何一个来打印。因此,要打印这样的字符串,可以使用三重引号或转义序列来打印字符串。
转义序列以反斜杠开头,可以被不同地解释。如果使用单引号表示字符串,则字符串中出现的所有单引号必须转义,双引号也是如此。
|---------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| # 初始字符串 String1 = '''I'm a "Python"''' print("使用三重引号的初始字符串: ") print(String1) # 转义单引号 String1 = 'I\'m a "Python"' print("\n转义单引号: ") print(String1) # 转义双引号 String1 = "I'm a \"Python\"" print("\n转义双引号: ") print(String1) # 使用转义序列打印路径 String1 = "C:\\Python\\World\\" print("\n转义反斜杠: ") print(String1) # 使用制表符打印路径 String1 = "Hi\tPython" print("\n制表符: ") print(String1) # 使用换行符打印路径 String1 = "Python\nPython" print("\n换行符: ") print(String1)
|
输出:
|---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13
| 使用三重引号的初始字符串: I'm a "Python" 转义单引号: I'm a "Python" 转义双引号: I'm a "Python" 转义反斜杠: C:\Python\World\ 制表符: Hi Python 换行符: Python World
|
示例: {#示例:-3}
要忽略字符串中的转义序列,可以使用r或R,这表示字符串是原始字符串,内部的转义序列将被忽略。
|---------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 使用转义序列打印八进制的hello String1 = "\110\145\154\154\157" print("\n使用转义序列打印八进制格式: ") print(String1) # 使用原始字符串忽略转义序列 String1 = r"This is \110\145\154\154\157" print("\n使用八进制格式打印原始字符串: ") print(String1) # 使用转义序列打印十六进制的Ptthon String1 = "This is \x47\x65\x65\x6b\x73 in \x48\x45\x58" print("\n使用转义序列打印十六进制格式: ") print(String1) # 使用原始字符串忽略转义序列 String1 = r"This is \x47\x65\x65\x6b\x73 in \x48\x45\x58" print("\n使用十六进制格式打印原始字符串: ") print(String1)
|
输出:
|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8
| 使用转义序列打印八进制格式: Hello 使用八进制格式打印原始字符串: This is \110\145\154\154\157 使用转义序列打印十六进制格式: This is Ptthon in HEX 使用十六进制格式打印原始字符串: This is \x47\x65\x65\x6b\x73 in \x48\x45\x58
|
Python字符串格式化 {#Python字符串格式化}
在Python中,字符串数据类型可以使用format()方法进行格式化,这是一种非常灵活和强大的字符串格式化工具。字符串中的format方法包含大括号{}作为占位符,可以根据位置或关键字指定顺序来保存参数。
示例1: {#示例1:}
在这个示例中,我们将声明一个包含大括号{}作为占位符的字符串,并为它们提供值以查看字符串声明位置的重要性。
|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # Python程序格式化字符串 # 默认顺序 String1 = "{} {} {}".format('Python', 'For', 'Life') print("默认顺序打印字符串: ") print(String1) # 位置格式化 String1 = "{1} {0} {2}".format('Python', 'For', 'Life') print("\n位置顺序打印字符串: ") print(String1) # 关键字格式化 String1 = "{l} {f} {g}".format(g='Python', f='For', l='Life') print("\n关键字顺序打印字符串: ") print(String1)
|
输出:
|---------------------|-------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6
| 默认顺序打印字符串: Python For Life 位置顺序打印字符串: For Python Life 关键字顺序打印字符串: Life For Python
|
示例2: {#示例2:}
可以使用格式说明符将整数(如二进制、十六进制等)和浮点数四舍五入或以指数形式显示。
|------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 整数格式化 String1 = "{0:b}".format(16) print("\n16的二进制表示: ") print(String1) # 浮点数格式化 String1 = "{0:e}".format(165.6458) print("\n165.6458的指数表示: ") print(String1) # 整数四舍五入 String1 = "{0:.2f}".format(1/6) print("\n六分之一: ") print(String1)
|
输出:
|---------------------|----------------------------------------------------------------|
| 1 2 3 4 5 6
| 16的二进制表示: 10000 165.6458的指数表示: 1.656458e+02 六分之一: 0.17
|
示例3: {#示例3:}
在Python字符串数据类型中,可以使用格式说明符将字符串左对齐、右对齐或居中对齐,用冒号(:)分隔。(<)表示字符串应在10个字符的字段宽度内左对齐,(>)表示右对齐,(^)表示居中对齐。我们也可以指定对齐的长度。例如,(<10)表示字符串应在10个字符的字段宽度内左对齐。
|-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4
| # 字符串对齐 String1 = "|{:<10}|{:^10}|{:>10}|".format('Grammer', 'for', 'Python') print("\n使用格式化的左对齐、居中对齐和右对齐: ") print(String1)
|
输出:
|-------------|-------------------------------------------------------------------|
| 1 2
| 使用格式化的左对齐、居中对齐和右对齐: |Grammer | for | Python|
|
示例4: {#示例4:}
旧样式格式化是在不使用format方法的情况下,通过%操作符完成的。
|-------------------|-----------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5
| # Python程序旧样式格式化整数 Integer1 = 12.3456789 print("3.2f格式化: ") print('Integer1的值是 %3.2f' % Integer1) print("\n3.
|
Python 字符串常量 {#Python-字符串常量}
| 内置函数 | 描述 |
|--------------------------|-------------------------------------|
| string.ascii_letters
| 小写字母和大写字母的拼接。 |
| string.ascii_lowercase
| 小写字母的拼接。 |
| string.ascii_uppercase
| 大写字母的拼接。 |
| string.digits
| 字符串中的数字。 |
| string.hexdigits
| 字符串中的十六进制数字。 |
| string.letters
| 小写字母和大写字母的拼接。 |
| string.lowercase
| 必须包含小写字母的字符串。 |
| string.octdigits
| 字符串中的八进制数字。 |
| string.punctuation
| 包含标点符号的ASCII字符。 |
| string.printable
| 可打印字符的字符串。 |
| String.endswith()
| 如果字符串以指定的后缀结尾,则返回True,否则返回False。 |
| String.startswith()
| 如果字符串以指定的前缀开头,则返回True,否则返回False。 |
| String.isdigit()
| 如果字符串中的所有字符都是数字,返回True,否则返回False。 |
| String.isalpha()
| 如果字符串中的所有字符都是字母,返回True,否则返回False。 |
| string.isdecimal()
| 如果字符串中的所有字符都是十进制数,返回True。 |
| str.format()
| Python3中的一种字符串格式化方法,允许多重替换和值格式化。 |
| String.index
| 返回字符串中子字符串第一次出现的位置。 |
| string.uppercase
| 必须包含大写字母的字符串。 |
| string.whitespace
| 包含所有空白字符的字符串。 |
| string.swapcase()
| 将字符串中的所有大写字符转换为小写,反之亦然,并返回结果。 |
| replace()
| 返回一个字符串的副本,其中所有子字符串的出现都被替换为另一个子字符串。 |
总结 {#总结}
本文,我们对 Python String进行了详细的分析,它是一种不可变的数据类型,用于存储和操作文本数据。支持创建、索引、切片、格式化等多种操作,常用于处理文本信息。