Python - 字符串
上一页下一页
字符串是 Python 中最流行的类型之一。我们可以简单地通过将字符括在引号中来创建它们。 Python 将单引号视为双引号。创建字符串就像为变量赋值一样简单。例如 -
var1 = 'Hello World!' var2 = "Python Programming"
访问字符串中的值
Python 不支持字符类型;这些被视为长度为 1 的字符串,因此也被视为子字符串。
要访问子字符串,请使用方括号进行切片以及索引或索引来获取子字符串。例如 -
现场演示#!/usr/bin/python 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/python var1 = 'Hello World!' print "Updated String :- ", var1[:6] + 'Python'
执行上述代码时,会产生以下结果 -
Updated String :- Hello Python
转义字符
下表是可以用反斜杠表示法表示的转义字符或不可打印字符的列表。
转义字符被解释;在单引号和双引号字符串中。
反斜杠符号 | 十六进制字符 | 描述 |
---|---|---|
\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、a.f 或 A.F 范围内 |
字符串特殊运算符
假设字符串变量 a 保存 'Hello' 和变量 b 持有'Python',然后 -
运算符 | 描述 | 示例 |
---|---|---|
+ | 连接 - 在运算符的任一侧添加值 | a + b 将给出 HelloPython |
* | 重复 - 创建新字符串,连接相同字符串的多个副本 | a*2 会给出 -HelloHello |
[] | 切片 - 给出给定索引中的字符 | a[1] 会给 e |
[ :] | 范围切片 - 给出给定范围内的字符 | a[1:4] 会给出 ell |
在 | Membership - 如果给定字符串中存在字符,则返回 true | H 中的将给出 1 |
不在 | Membership - 如果给定字符串中不存在字符,则返回 true | M 不在 a 中会给出 1 |
r/R | 原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与普通字符串的语法完全相同,但原始字符串运算符除外,即引号前面的字母“r”。 “r”可以是小写字母 (r) 或大写字母 (R),并且必须紧挨在第一个引号之前。 | print r'\n' 打印 \n 和 print R'\n' 打印 \n |
% | Format - 执行字符串格式化 | 见下节 |
字符串格式化操作符
Python 最酷的特性之一是字符串格式运算符 %。该运算符是字符串独有的,弥补了 C 的 printf() 系列中的函数包。以下是一个简单的例子 -
现场演示#!/usr/bin/python print "My name is %s and weight is %d kg!" % ('Zara', 21)
执行上述代码时,会产生以下结果 -
My name is Zara and weight is 21 kg!
这是可以与 % 一起使用的完整符号集列表 -
格式化符号 | 转换 |
---|---|
%c | 字符 |
%s | 在格式化之前通过 str() 进行字符串转换 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 指数符号(带小写'e') |
%E | 指数表示法(大写“E”) |
%f | 浮点实数 |
%g | %f 和 %e 中较短的一个 |
%G | %f 和 %E 中较短的一个 |
下表列出了其他支持的符号和功能 -
符号 | 功能 |
---|---|
* | 参数指定宽度或精度 |
- | 左对齐 |
+ | 显示标志 |
在正数前留一个空格 | |
# | 添加八进制前导零 ('0') 或十六进制前导 '0x' 或 '0X',具体取决于使用的是 'x' 还是 'X'。 |
0 | 从左边用零(而不是空格)填充 |
% | '%%' 给你留下一个文字 '%' |
(var) | 映射变量(字典参数) |
m.n. | m 是最小总宽度,n 是小数点后显示的位数(如果适用) |
三引号
Python 的三重引号允许字符串跨越多行,包括逐字换行符、制表符和任何其他特殊字符。
三引号的语法由三个连续的单引号或双引号组成 引号。
现场演示#!/usr/bin/python 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/python print 'C:\\nowhere'
执行上述代码时,会产生以下结果 -
C:\nowhere
现在让我们使用原始字符串。我们将表达式放在 r'expression' 如下 -
现场演示#!/usr/bin/python print r'C:\\nowhere'
执行上述代码时,会产生以下结果 -
C:\\nowhere
Unicode 字符串
Python 中的普通字符串在内部存储为 8 位 ASCII,而 Unicode 字符串存储为 16 位 Unicode。这允许使用更多样化的字符集,包括来自世界上大多数语言的特殊字符。我将对 Unicode 字符串的处理限制为以下内容 -
现场演示#!/usr/bin/python print u'Hello, world!'
执行上述代码时,会产生以下结果 -
Hello, world!
如您所见,Unicode 字符串使用前缀 u,就像原始字符串使用前缀 r。
内置字符串方法
Python 包含以下内置方法来操作字符串 -
Sr.No. | 方法描述 |
---|---|
1 | 大写() 字符串首字母大写 |
2 | 中心(宽度,填充字符) 返回一个以空格填充的字符串,原始字符串以总宽度列为中心。 |
3 | count(str, beg=0,end=len(string)) 如果给定了起始索引 beg 和结束索引 end,则计算 str 在字符串或字符串的子字符串中出现的次数。 |
4 | decode(encoding='UTF-8',errors='strict') 使用为编码注册的编解码器对字符串进行解码。 encoding 默认为默认字符串编码。 |
5 | encode(encoding='UTF-8',errors='strict') 返回字符串的编码字符串版本;发生错误时,默认是引发 ValueError,除非错误是用 'ignore' 或 'replace' 给出的。 |
6 | endswith(suffix, beg=0, end=len(string)) 确定字符串或字符串的子字符串(如果给出了起始索引 beg 和结束索引 end)是否以后缀结尾;如果是则返回 true,否则返回 false。 |
7 | 扩展标签(标签大小=8) 将字符串中的制表符扩展到多个空格;如果未提供 tabsize,则默认为每个 tab 8 个空格。 |
8 | find(str, beg=0 end=len(string)) 如果给出起始索引 beg 和结束索引 end 则确定 str 出现在字符串中还是出现在字符串的子字符串中,如果找到则返回 index,否则返回 -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 | 加入(序列) 将序列 seq 中元素的字符串表示合并(连接)成一个字符串,带有分隔符字符串。 |
19 | len(字符串) 返回字符串的长度 |
20 | ljust(宽度[, fillchar]) 返回一个空格填充的字符串,原始字符串左对齐到总宽度列。 |
21 | 降低() 将字符串中的所有大写字母转换为小写。 |
22 | lstrip() 删除字符串中的所有前导空格。 |
23 | maketrans() 返回要在翻译函数中使用的翻译表。 |
24 | 最大值(str) 返回字符串 str 中的最大字母字符。 |
25 | 分钟(字符串) 返回字符串 str 中的最小字母字符。 |
26 | 替换(旧,新 [,最大]) 将字符串中所有出现的 old 替换为新的,或者如果给定 max,则最多替换为 max 次。 |
27 | rfind(str, beg=0,end=len(string)) 与 find() 相同,但在字符串中向后搜索。 |
28 | rindex(str, beg=0, end=len(string)) 与 index() 相同,但在字符串中向后搜索。 |
29 | rjust(宽度,[, fillchar]) 返回一个以空格填充的字符串,原始字符串右对齐到总宽度列。 |
30 | rstrip() 删除字符串的所有尾随空格。 |
31 | split(str="", num=string.count(str)) 根据分隔符 str 拆分字符串(如果未提供空格)并返回子字符串列表;如果给定,最多拆分为 num 个子字符串。 |
32 | 分割线(num=string.count('\n')) 在所有(或 num)个 NEWLINE 处拆分字符串,并返回删除了 NEWLINE 的每一行的列表。 |
33 | startswith(str, beg=0,end=len(string)) 确定字符串或字符串的子字符串(如果给出了起始索引 beg 和结束索引 end)是否以子字符串 str 开头;如果是则返回 true,否则返回 false。 |
34 | strip([字符]) 对字符串执行 lstrip() 和 rstrip()。 |
35 | swapcase() 反转字符串中所有字母的大小写。 |
36 | 标题() 返回“titlecased”版本的字符串,即所有单词都以大写开头,其余的都是小写。 |
37 | 翻译(表, deletechars="") 根据翻译表str(256 chars)翻译字符串,删除del字符串中的。 |
38 | 上() 将字符串中的小写字母转换为大写。 |
39 | zfill (宽度) 返回用零填充到总宽度字符的原始字符串;用于数字,zfill() 保留任何给定的符号(少一个零)。 |
40 | 十进制() 如果 unicode 字符串只包含十进制字符,则返回 true,否则返回 false。 |
Python