Python 3 - 字符串
-
简述
字符串是 Python 中最流行的类型之一。我们可以简单地通过将字符括在引号中来创建它们。Python 将单引号视为与双引号相同。创建字符串就像为变量赋值一样简单。例如 -var1 = 'Hello World!' var2 = "Python Programming"
-
访问字符串中的值
Python 不支持字符类型;这些被视为长度为 1 的字符串,因此也被视为子字符串。要访问子字符串,请使用方括号与索引一起进行切片以获取子字符串。例如 -#!/usr/bin/python3 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
-
更新字符串
您可以通过(重新)将变量分配给另一个字符串来“更新”现有字符串。新值可以与其先前的值相关,也可以与完全不同的字符串相关。例如 -#!/usr/bin/python3 var1 = 'Hello World!' print ("Updated String :- ", var1[:6] + 'Python')
执行上述代码时,会产生以下结果 -Updated String :- Hello Python
-
转义字符
下表是可以用反斜杠符号表示的转义字符或不可打印字符的列表。转义字符被解释;在单引号和双引号字符串中。反斜杠符号 十六进制字符 Description \a 0x07 响铃或警报 \b 0x08 退格键 \cx Control-x \C-x Control-x \e 0x1b 逃脱 \f 0x0c 换页 \M-\C-x 元控制-x \n 0x0a 新行 \nnn 八进制表示法,其中 n 在 0.7 范围内 \r 0x0d 回车 \s 0x20 空间 \t 0x09 标签 \v 0x0b 垂直制表符 \x 角色 x \xnn 十六进制表示法,其中 n 在 0.9、af 或 AF 范围内 -
字符串特殊运算符
假设字符串变量a持有“你好”和变量b持有'Python',然后 -操作员 描述 例子 + 串联 - 在运算符的任一侧添加值 a + b will give HelloPython * 重复 - 创建新字符串,连接同一字符串的多个副本 a*2 will give -HelloHello [] Slice - 给出给定索引中的字符 a[1] will give e [ : ] Range Slice - 给出给定范围内的字符 a[1:4] will give ell in Membership - 如果给定字符串中存在某个字符,则返回 true H in a will give 1 not in Membership - 如果给定字符串中不存在某个字符,则返回 true M not in a will give 1 r/R 原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与普通字符串的语法完全相同,除了原始字符串运算符,即引号前面的字母“r”。“r”可以是小写字母 (r) 或大写字母 (R),并且必须紧接在第一个引号之前。 print r'\n' prints \n and print R'\n'prints \n % Format - 执行字符串格式化 见下一节 -
字符串格式化运算符
Python 最酷的功能之一是字符串格式运算符 %。此运算符是字符串所独有的,并且弥补了 C 的 printf() 系列中的函数包。以下是一个简单的例子 -#!/usr/bin/python3 print ("My name is %s and weight is %d kg!" % ('Alex', 21))
执行上述代码时,会产生以下结果 -My name is Alex 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 的三重引号允许字符串跨越多行,包括逐字的 NEWLINE、TAB 和任何其他特殊字符。三重引号的语法由三个连续的single or double引号。#!/usr/bin/python3 para-str = """this is a long string that is made up of several lines and non-printable characters such as TAB ( \t ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up. """ print (para-str)
执行上述代码时,会产生以下结果。请注意每个特殊字符是如何转换为打印形式的,一直到“up”之间字符串末尾的最后一个 NEWLINE。并关闭三重引号。另请注意,NEWLINE 出现在行尾的显式回车或其转义码 (\n) -this is a long string that is made up of several lines and non-printable characters such as TAB ( ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ ], or just a NEWLINE within the variable assignment will also show up.
原始字符串根本不将反斜杠视为特殊字符。您放入原始字符串中的每个字符都保持您编写它的方式 -#!/usr/bin/python3 print ('C:\\nowhere')
执行上述代码时,会产生以下结果 -C:\nowhere
现在让我们使用原始字符串。我们会把表达式放在r'expression'如下 -#!/usr/bin/python3 print (r'C:\\nowhere')
执行上述代码时,会产生以下结果 -C:\\nowhere
-
Unicode 字符串
在 Python 3 中,所有字符串都以 Unicode 表示。在 Python 2 中,内部存储为 8 位 ASCII,因此需要附加 'u' 以使其成为 Unicode。现在不再需要了。内置字符串方法
Python 包括以下内置方法来操作字符串 -序号 方法与说明 1 capitalize() 将字符串的第一个字母大写2 center(width, fillchar) 返回一个用fillchar填充的字符串,原始字符串以总宽度列为中心。3 count(str, beg = 0,end = len(string)) 如果给定起始索引 beg 和结束索引 end,则计算 str 在字符串或字符串的子字符串中出现的次数。4 decode(encoding = 'UTF-8',errors = 'strict') 使用为编码注册的编解码器解码字符串。编码默认为默认字符串编码。5 encode(encoding = 'UTF-8',errors = 'strict') 返回字符串的编码字符串版本;出错时,默认情况下会引发 ValueError,除非使用“忽略”或“替换”给出错误。6 endswith(suffix, beg = 0, end = len(string)) 确定字符串或字符串的子字符串(如果给出起始索引 beg 和结束索引 end)是否以后缀结尾;如果是,则返回 true,否则返回 false。7 expandtabs(tabsize = 8) 将字符串中的制表符扩展为多个空格;如果未提供制表符大小,则默认为每个制表符 8 个空格。8 find(str, beg = 0 end = len(string)) 如果给定起始索引 beg 和结束索引 end,则确定 str 是否出现在字符串中或字符串的子字符串中,如果找到则返回索引,否则返回 -1。9 index(str, beg = 0, end = len(string)) 与 find() 相同,但如果未找到 str 则引发异常。10 isalnum() 如果字符串至少有 1 个字符并且所有字符都是字母数字,则返回 true,否则返回 false。11 isalpha() 如果字符串至少有 1 个字符并且所有字符都是字母,则返回 true,否则返回 false。12 isdigit() 如果字符串仅包含数字则返回 true,否则返回 false。13 islower() 如果字符串至少有 1 个大小写字符且所有大小写字符均为小写,则返回 true,否则返回 false。14 isnumeric() 如果 unicode 字符串仅包含数字字符,则返回 true,否则返回 false。15 isspace() 如果字符串仅包含空白字符,则返回 true,否则返回 false。16 istitle() 如果字符串正确地“titlecased”则返回 true,否则返回 false。17 isupper() 如果字符串至少有一个大小写字符并且所有大小写字符都是大写,则返回 true,否则返回 false。18 join(seq) 将序列 seq 中元素的字符串表示合并(连接)为一个字符串,带有分隔符字符串。19 len(string) 返回字符串的长度20 ljust(width[, fillchar]) 返回一个空格填充的字符串,原始字符串左对齐到总宽度列。21 lower() 将字符串中的所有大写字母转换为小写字母。22 lstrip() 删除字符串中的所有前导空格。23 maketrans() 返回要在翻译函数中使用的翻译表。24 max(str) 返回字符串 str 中的最大字母字符。25 min(str) 返回字符串 str 中的最小字母字符。26 replace(old, new [, max]) 将字符串中所有出现的旧字符替换为新字符,或者如果给定了最大值,则最多出现最大字符数。27 rfind(str, beg = 0,end = len(string)) 与 find() 相同,但在字符串中向后搜索。28 rindex( str, beg = 0, end = len(string)) 与 index() 相同,但在字符串中向后搜索。29 rjust(width,[, fillchar]) 返回一个空格填充的字符串,原始字符串右对齐到总宽度列。30 rstrip() 删除字符串的所有尾随空格。31 split(str="", num=string.count(str)) 根据分隔符 str 拆分字符串(如果未提供则为空格)并返回子字符串列表;如果给定,最多分成 num 个子字符串。32 splitlines( num=string.count('\n')) 在所有(或 num)个 NEWLINE 处拆分字符串并返回删除了 NEWLINE 的每一行的列表。33 startswith(str, beg=0,end=len(string)) 确定字符串或字符串的子字符串(如果给出起始索引 beg 和结束索引 end)是否以子字符串 str 开头;如果是,则返回 true,否则返回 false。34 strip([chars]) 对字符串执行 lstrip() 和 rstrip()35 swapcase() 反转字符串中所有字母的大小写。36 title() 返回字符串的“titlecased”版本,即所有单词以大写开头,其余为小写。37 translate(table, deletechars="") 根据翻译表 str(256 chars) 翻译字符串,删除 del 字符串中的那些。38 upper() 将字符串中的小写字母转换为大写字母。39 zfill (width) 返回用零填充到宽度字符总数的原始字符串;用于数字,zfill() 保留给定的任何符号(减去一个零)。40 isdecimal() 如果 unicode 字符串仅包含十进制字符,则返回 true,否则返回 false。