在上一节中,我们学习了python数据结构集合set的用法,在本节中我们来学习Python中的字符串String的使用及其相关的操作。
在Python中,字符串是表示Unicode字符的字节数组,但是,Python没有字符数据类型,单个字符只是长度为1的字符串,方括号可用于访问字符串的元素。
1、创建字符串
Python中的字符串可以使用单引号、双引号甚至三引号创建。
# 使用单引号创建一个字符串
String1 = '苏格拉底哲学'
print("使用单引号创建的字符串: ")
print(String1)
# 使用双引号创建一个字符串
String1 = "La Oreja De Van Gogh"
print("\n使用双引号创建的字符串: ")
print(String1)
# 使用三引号创建一个字符串
String1 = '''The Price Of Salt'''
print("\n使用三引号创建的字符串: ")
print(String1)
# 使用三引号创建的字符串允许多行
String1 = '''who
are
you?'''
print("\n多行字符串: ")
print(String1)
2、访问字符串中的字符
在Python中,可以使用索引的方法访问字符串的各个字符。其中索引允许负地址,也技术负索引,负索引从字符串的后面访问字符,例如-1表示最后一个字符,-2表示倒数第二个字符,依此类推。
当访问超出范围的索引时,将导致一个IndexError。Python中只允许使用整数作为索引,使用浮点数或其他类型传递会导致TypeError类型错误。
String1 = "Python and Numpy"
print("初始字符串: ")
print(String1)
# 打印第一个字符(正整数索引)
print("\n第一个字符: ")
print(String1[0])
# 打印最后一个字符(正整数索引)
print("\n最后一个字符: ")
print(String1[len(String1) - 1])
# 打印第一个字符(负整数索引)
print("\n第一个字符: ")
print(String1[-len(String1)])
# 打印最后一个字符(负整数索引)
print("\n最后一个字符: ")
print(String1[-1])
3、字符串分割和切片
要访问字符串中的某个范围的字符,可以使用切片方法。在字符串中切片是通过使用切片操作符(冒号)来完成的。
# 创建一个字符串
String1 = "PythonAndNumpy"
print("初始字符串: ")
print(String1)
# 打印第3个到第9个字符
# 整数索引0开始,索引3字符为'h'
print("\n3-9切片字符: ")
print(String1[3:9])
# 打印第3个到第-2个的字符
print("\n第3个到-2个字符: ")
print(String1[3:-2])
4、更新/删除字符串中的字符
在Python中,不允许从字符串中更新或删除字符,执行这些操作将导致一个错误,因为不支持从字符串中分配项或删除项,虽然使用内置的del关键字可以删除整个字符串。这是因为字符串是不可变的,因此字符串的元素一旦被赋值就不能被改变,只有新的字符串可以重新分配到相同的名称。
String1 = "Python And Numpy"
print("初始字符串: ")
print(String1)
# 更新字符中的字符
String1[2] = 'P'
print("\n更新字符: ")
print(String1)
以上代码会报错:TypeError: ‘str’ object does not support item assignment
下面代码是更新整个字符串,这是允许的:
String1 = "Python And Numpy"
print("初始字符串: ")
print(String1)
# 更新整个字符串
String1 = "SpringBoot"
print("\n更新后的字符串: ")
print(String1)
下面代码是从字符串中删除一个字符,这是不允许的,会报一个错误:TypeError: ‘str’ object doesn’t support item deletion
String1 = "Python And Numpy"
print("初始字符串: ")
print(String1)
# 更新整个字符串
del String1[2]
print("\n删除一个字符后的字符串: ")
print(String1)
删除整个字符串,使用del关键字可以删除整个字符串。另外,如果我们试图打印字符串,这将产生一个错误:NameError: name ‘String1’ is not defined,因为字符串被删除,无法打印。
String1 = "Python And Numpy"
print("初始字符串: ")
print(String1)
# 更新整个字符串
del String1
print("\n删除后的字符串: ")
print(String1)
5、Python中的转义排序
当打印带有单引号和双引号的字符串时,会导致SyntaxError,因为字符串已经包含单引号和双引号,因此不能使用其中任何一个来打印。因而,要打印这样的字符串,要么使用三重引号,要么使用转义序列来打印这样的字符串。
转义序列以反斜杠开头,可以用不同的方式解释。如果单引号用于表示一个字符串,那么字符串中出现的所有单引号都必须转义,双引号也是如此。
# 初始字符串
String1 = '''I say "Hola"'''
print("使用三重引号的初始字符串: ")
print(String1)
# 单引号转义
String1 = 'I\'m a boy'
print("\n单引号转义: ")
print(String1)
# 双引号转移
String1 = "I'm a \"boy\""
print("\n双引号转移: ")
print(String1)
# 使用转义序列打印路径
String1 = "D:\\Python\\dev\\"
print("\n转移反斜杠: ")
print(String1)
若要忽略字符串中的转义序列,则使用r或R,也就是说该字符串是原始字符串,且其内部的转义序列将被忽略。
# 打印字符串HEX
String1 = "\x48\x45\x58"
print("\n打印转移后的字符串: ")
print(String1)
# 使用原始字符串
# 忽略转义序列
String1 = r"\x48\x45\x58"
print("\nHEX格式字符串: ")
print(String1)
6、字符串格式化
Python中的字符串可以使用format()方法进行格式化,format()方法是一个非常通用且功能强大的字符串格式化函数。
字符串String中的format函数包含大括号{}作为占位符,它可以根据位置或关键字保存参数,以指定顺序。
# 默认顺序
String1 = "{} {} {}".format('La Oreja', 'De', 'Van Gogh')
print("打印默认顺序的字符串: ")
print(String1)
# 按位置格式化
String1 = "{1} {0} {2}".format('La Oreja', 'De', 'Van Gogh')
print("\n位置格式化后的字符串: ")
print(String1)
# 关键字格式化
String1 = "{v} {l} {d}".format(l='La Oreja', d='De', v='Van Gogh')
print("\n关键字格式化后的字符串: ")
print(String1)
使用格式说明符,可以将二进制、十六进制等整数和浮点数四舍五入或以指数形式显示。
# 格式化整数
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)
字符串可以左()或中(^)对齐,使用格式说明符,用冒号(:)分隔。
# 字符串对齐
String1 = "|{:<10}|{:^10}|{:>10}|".format('La Oreja', 'De', 'Van Gogh')
print("\n左中右对齐的字符串: ")
print(String1)
# 空间对齐
String1 = "\n{0:^16}第一张专辑发行年份: {1:<4}!".format("La Oreja De Van Gogh", 1998)
print(String1)
老式的格式化是通过使用%操作符来完成的,没有使用format方法:
Integer1 = 12.3456789
print("格式为3.2f: ")
print('Integer1的值为 %3.2f' %Integer1)
print("\n格式为3.4f: ")
print('Integer1的值为 %3.4f' %Integer1)
7、Python所有字符串常量和字符串操作函数
内置函数 | 说明 |
string.ascii_letters | 关联的ascii小写和ascii大写常量。. |
string.ascii_lowercase | 关联的小写字母 |
string.ascii_uppercase | 关联的大写字母 |
string.digits | 字符串中的数字 |
string.hexdigits | 字符串中的hex数 |
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() | 返回字符串的副本,其中所有出现的子字符串都被替换为另一个子字符串。 |
8、已过时的字符串操作函数
内置函数 | 说明 |
string.Isdecimal | 如果字符串中的所有字符都是小数,则返回true |
String.Isalnum | 如果给定字符串中的所有字符都是字母数字,则返回true。 |
string.Istitle | 如果字符串是标题字符串,则返回True |
String.partition | 在第一次出现分隔符时分割字符串并返回一个元组。 |
String.Isidentifier | 检查字符串是否是有效的标识符。 |
String.len | 返回字符串长度. |
String.rindex | 如果找到子字符串,则返回字符串内子字符串的最高索引。 |
String.Max | 返回字符串中字母最高的字符。 |
String.min | 返回字符串中按字母顺序排列的最小字符。 |
String.splitlines | 返回字符串中的行列表。 |
string.capitalize | 返回首字母大写的单词。 |
string.expandtabs | 展开字符串中的制表符,将它们替换为一个或多个空格 |
string.find | 返回子字符串中最低的索引。 |
string.rfind | 查找最高的索引。 |
string.count | 返回字符串中子字符串出现的次数(不重叠) |
string.lower | 返回string的副本,但将大写字母转换为小写字母。 |
string.split | 返回字符串的单词列表,如果可选的第二个参数sep不存在或没有 |
string.rsplit() | 返回字符串s的单词列表,从末尾扫描s。 |
rpartition() | 函数将给定字符串分成三部分 |
string.splitfields | 当仅与两个参数一起使用时,返回字符串的单词列表。 |
string.join | 将单词的列表或元组与sep的中间出现连接起来。 |
string.strip() | 它返回一个字符串的副本,删除了开头和结尾字符 |
string.lstrip | 返回删除了前导字符的字符串的副本。 |
string.rstrip | 返回删除尾随字符的字符串的副本。 |
string.swapcase | 将小写字母转换为大写字母,反之亦然。 |
string.translate | 使用表格翻译字符 |
string.upper | 小写字母转换为大写字母。 |
string.ljust | 在给定宽度的字段中左对齐。 |
string.rjust | 在给定宽度范围内右对齐。 |
string.center() | 在给定宽度的字段中居中对齐。 |
string-zfill | 将数字字符串填充到左边,直到达到给定的宽度为止。 |
string.replace | 返回字符串s的副本,将所有出现的旧字符串替换为新字符串。 |
评论前必须登录!
注册