Python 3 – 字符串

Python 3 – 字符串

字符串是 Python 中最受欢迎的类型之一。我们只需要在引号中包含字符,就可以创建它们。Python 将单引号视为双引号的相同,简单地将值分配给一个变量即可创建字符串。例如 −

var1 = 'Hello World!'
var2 = "Python Programming"

访问字符串中的值

Python 不支持字符类型;这些被视为长度为一的字符串,也被视为子字符串。

要访问子字符串,请使用方括号进行切片,连同索引或索引以获取子字符串。例如 −

#!/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("更新后的字符串:", var1[:6] + 'Python')

当执行上述代码时,会产生以下结果 −

更新后的字符串: Hello Python

转义字符

下表是可以用反斜杠表示的转义或不可打印字符列表。

转义字符会被解释,即在单引号和双引号字符串中均可使用。

反斜杠表示 十六进制字符 描述
\a 0x07 响铃或警报
\b 0x08 退格
\cx 控制-x
\C-x 控制-x
\e 0x1b 转义符
\f 0x0c 换页符
\M-\C-x Meta-Control-x
\n 0x0a 换行符
\nnn 八进制表示,其中 n 在范围 0-7 之间
\r 0x0d 回车符
\s 0x20 空格
\t 0x09 制表符
\v 0x0b 垂直制表符
\x 字符 x
\xnn 十六进制表示,其中 n 在 0.9、a.f 或 A.F 范围内

字符串特殊运算符

假设字符串变量 a 包含 ‘Hello’,变量 b 包含 ‘Python’,则 −

运算符 描述 例子
+ 连接 – 在操作符两侧添加值 a + b 将会得到 HelloPython
* 重复 – 创建新字符串,将多个副本连接在一起 a*2 将会得到 -HelloHello
[] 切片 – 给定索引返回字符 a[1] 将会得到 e
[ : ] 范围切片 – 给定范围返回字符 a[1:4] 将会得到 ell
in 成员 – 如果字符存在于给定的字符串中,则返回 true H in a 将会得到 1
not in 成员 – 如果字符不存在于给定的字符串中,则返回 true M not in a 将会得到 1
r/R 原始字符串 – 抑制转义字符的实际意义。原始字符串的语法与正常字符串完全相同,除了原始字符串运算符,即“r”字母,它位于引号之前。 “r” 可以是小写字母 (r) 或大写字母 (R),必须紧接在第一个引号之前放置。 print r’\n’ 将会打印 \n,print R’\n’ 将会打印 \n。
% 格式化 – 进行字符串格式化 见下一节

字符串格式化运算符

Python最酷的功能之一是字符串格式化运算符“%”。此运算符仅适用于字符串,并弥补了没有C printf()家族函数的缺陷。以下是一个简单的示例−

#!/usr/bin/python3

print ("My name is %s and weight is %d kg!" % ('Zara', 21)) 

运行上述代码时,会产生如下结果−

My name is Zara 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 的三引号可帮助字符串跨越多行,包括原样输出的 NEWLINEs、TAB 及任何其他特殊字符。

三引号的语法由三个相邻的 单引号或双引号 组成。

#!/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,除非使用’ignore’或’replace’的errors参数。
6 endswith(suffix, beg=0, end=len(string))确定字符串或字符串的子串(如果给定起始索引beg和结束索引end)是否以后缀结尾;如果是,则返回true,否则返回false。
7 expandtabs(tabsize=8)将字符串中的制表符扩展为多个空格;如果未提供tabsize,则默认为8个空格。
8 find(str, beg=0, end=len(string))确定str是否出现在字符串或字符串的子串中(如果给定了起始索引beg和结束索引end),如果找到,则返回索引,否则返回-1。
9 index(str, beg=0, end=len(string))与find()相同,但如果未找到str,则引发异常。
10 isalnum()如果字符串至少有一个字符且所有字符都是字母数字,则返回true,否则返回false。
11 isalpha()如果字符串至少有一个字符且所有字符都是字母,则返回true,否则返回false。
12 isdigit()如果字符串只包含数字,则返回true,否则返回false。
13 islower()如果字符串至少有一个大小写字母且所有大小写字母都是小写,则返回true,否则返回false。
14 isnumeric()如果unicode字符串仅包含数字字符,则返回true,否则返回false。
15 isspace()如果字符串仅包含空格字符,则返回true,否则返回false。
16 istitle()如果字符串是正确的“标题格式”,则返回true,否则返回false。
17 isupper()如果字符串至少有一个大小写字母并且所有的大写字母都是大写的,则返回True,否则返回False。
18 join(seq)将序列seq中的元素的字符串表示连接(拼接)成一个字符串,并使用分隔符字符串。
19 len(string)返回字符串的长度。
20 ljust(width[, fillchar])返回一个在原始字符串左对齐到宽度列的空格填充字符串。
21 lower()将字符串中的所有大写字母转换为小写字母。
22 lstrip()删除字符串中所有前导空格。
23 maketrans()返回一个用于在translate函数中使用的翻译表。
24 max(str)返回字符串str中最大的字母字符。
25 min(str)返回字符串str中最小的字母字符。
26 replace(old, new [, max])将字符串中所有出现的旧字符串替换为新字符串,或者如果给定max,则最多替换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个)换行符处分割,并返回删除换行符后的每一行的列表。
33 startswith(str, beg=0,end=len(string))确定字符串或字符串的子串(如果给定起始索引beg和结束索引end)是否以子串str开头;如果是,则返回true,否则返回false。
34 [strip(chars])对字符串执行lstrip()和rstrip()的操作。
35 swapcase()反转字符串中所有字母的大小写。
36 title()返回字符串的“标题化”版本,即所有单词以大写字母开头,其余为小写字母。
37 translate(table, deletechars=””)根据翻译表str(256个字符)转换字符串,删除del字符串中的字符。
38 upper()将字符串中的小写字母转换为大写字母。
39 zfill (width)将原始字符串左侧填充零以达到总宽度为width的字符数;适用于数字,zfill()保留给定的任何符号(少一个零)。
40 isdecimal()如果Unicode字符串仅包含十进制字符,则返回true,否则返回false。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程