Python 简明教程
Python - Strings
在 Python 中, string 是 Unicode characters 的不可变序列。每个字符都具有一个根据 UNICODE 标准的唯一 numeric value 。但是,作为一个整体的序列并没有任何数字值,即使所有字符都是数字。为了将字符串与数字和其他标识符区分开来,字符序列在它的文字表示中包含在单引号、双引号或三引号内。因此,1234 是一个数字(整数),但“1234”是一个字符串。
Accessing Values in Strings
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
Updating Strings
你可以通过将变量(重新)分配给另一个字符串来“更新”一个现有字符串。新值可以与它的前一个值相关,或者也可以与一个完全不同的字符串相关。例如 −
var1 = 'Hello World!'
print ("Updated String :- ", var1[:6] + 'Python')
执行上述代码后,将生成以下结果 −
Updated String :- Hello Python
访问我们的 Python - Modify Strings 教程以了解有关更新/修改字符串的更多信息。
Escape Characters
下表是可以用反斜杠标记表示的转义符或不可打印字符的列表。
escape character 得到解释;在单引号和双引号字符串中。
Backslash notation |
Hexadecimal character |
Description |
\a |
0x07 |
Bell or alert |
\b |
0x08 |
Backspace |
\cx |
Control-x |
|
\C-x |
Control-x |
|
\e |
0x1b |
Escape |
\f |
0x0c |
Formfeed |
\M-\C-x |
Meta-Control-x |
|
\n |
0x0a |
Newline |
\nnn |
八进制记法,其中 n 在范围 0.7 中 |
|
\r |
0x0d |
Carriage return |
\s |
0x20 |
Space |
\t |
0x09 |
Tab |
\v |
0x0b |
Vertical tab |
\x |
Character x |
|
\xnn |
十六进制记法,其中 n 在范围 0.9、a.f 或 A.F 中 |
String Special Operators
假设字符串变量 a 存储“Hello”,变量 b 存储“Python”,则 −
Operator |
Description |
Example |
+ |
连接 - 在运算符的任一侧添加值 |
a + b 将给出 HelloPython |
* |
重复 - 创建新字符串,连接相同字符串的多个副本 |
a*2 will give -HelloHello |
[] |
分片 - 从给定索引中获取字符 |
a[1] will give e |
[ : ] |
范围分片 - 从给定范围内获取字符 |
a[1:4] will give ell |
in |
成员资格 - 如果一个字符存在于给定字符串中,则返回 true |
H in a 将给出 1 |
not in |
成员资格 - 如果一个字符不存在于给定字符串中,则返回 true |
M 不会给 1 |
r/R |
原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与普通字符串完全相同,除了原始字符串运算符(字母“r”)位于引号之前。“r”可以是小写(r)或大写 ®,并且必须紧邻第一个引号。 |
print r'\n' 打印 \n,print R'\n’打印 \n |
% |
格式 - 执行字符串格式化 |
See at next section |
String Formatting Operator
Python 最酷的功能之一是字符串格式运算符 %。此运算符对于字符串是唯一的,并且弥补了 C 的 printf() 系列中没有函数的缺陷。以下是一个简单的示例:
print ("My name is %s and weight is %d kg!" % ('Zara', 21))
执行上述代码后,将生成以下结果 −
My name is Zara and weight is 21 kg!
以下是可与 % 一起使用的完整符号集列表:
Sr.No. |
Format Symbol & Conversion |
1 |
%c character |
2 |
%s 在格式化之前通过 str() 完成字符串转换 |
3 |
%i signed decimal integer |
4 |
%d signed decimal integer |
5 |
%u unsigned decimal integer |
6 |
%o octal integer |
7 |
%x hexadecimal integer (lowercase letters) |
8 |
%X hexadecimal integer (UPPERcase letters) |
9 |
%e 指数表示法(使用小写的 'e') |
10 |
%E 指数表示法(使用大写的 'E') |
11 |
%f floating point real number |
12 |
%g %f 和 %e 中的较短者 |
13 |
%G %f 和 %E 中的较短者 |
支持的其他符号和功能列在以下表中:
Sr.No. |
Symbol & Functionality |
1 |
参数指定宽度或精度 |
2 |
- left justification |
3 |
+ display the sign |
4 |
<sp> 在正数前留一个空格 |
5 |
# 添加八进制前导零('0')或十六进制前导'0x’或'0X',具体取决于是否使用了’x’或’X'。 |
6 |
0 从左填充零(而不是空格) |
7 |
% '%%' 给你留一个单一的文字 '%' |
8 |
(var) mapping variable (dictionary arguments) |
9 |
m.n. m 是最小总宽度,n 是小数点后要显示的位数(如果适用) |
访问我们的 Python - String Formatting 教程,了解格式化字符串的各种方法。
Arithmetic Operators with Strings
字符串是一个非数字数据类型。显然,我们不能对字符串操作数使用算术运算符。在这种情况下,Python 会引发 TypeError。
print ("Hello"-"World")
执行以上程序会产生如下错误 -
>>> "Hello"-"World"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'
Built-in String Methods
Python 包含以下内置方法来操作字符串 -
Sr.No. |
Methods with Description |
1 |
capitalize() 将字符串的首字母大写。 |
2 |
casefold() 将字符串中的所有大写字母转换为小写。与 lower() 类似,但也可以在 UNICODE 字符上使用。 |
3 |
center(width, fillchar) 返回一个空格填充的字符串,其中原始字符串居中,总共为 width 列。 |
4 |
../python/string_count.html[count(str, beg=0, end=len(string))]Counts how many times str occurs in string or in a substring of string if starting index beg and ending index end are given. |
5 |
../python/string_decode.html[decode(encoding='UTF-8', ), errors=strict]Decodes the string using the codec registered for encoding. encoding defaults to the default string encoding. |
6 |
../python/string_encode.html[encode(encoding='UTF-8', ), errors=strict]Returns encoded string version of string; on error, default is to raise a ValueError unless errors is given with 'ignore' or 'replace'. |
7 |
../python/string_endswith.html[endswith(suffix, beg=0, end=len(string))]Determines if string or a substring of string (if starting index beg and ending index end are given) ends with suffix; returns true if so and false otherwise. |
8 |
expandtabs(tabsize=8) 将字符串中的制表符扩展为多个空格;如果未提供 tabsize,则默认每个制表符 8 个空格。 |
9 |
../python/string_find.html[find(str, beg=0 end=len(string))]Determine if str occurs in string or in a substring of string if starting index beg and ending index end are given returns index if found and -1 otherwise. |
10 |
format(*args, **kwargs) 此方法用于格式化当前字符串值。 |
11 |
format_map(mapping) 此方法也用于格式化当前字符串,唯一的区别是它使用映射对象。 |
12 |
../python/string_index.html[index(str, beg=0, end=len(string))]Same as find(), but raises an exception if str not found. |
13 |
isalnum() 如果字符串至少包含 1 个字符,并且所有字符都是字母数字,则返回 true,否则返回 false。 |
14 |
isalpha() 如果字符串至少包含 1 个字符,并且所有字符都是字母,则返回 true,否则返回 false。 |
15 |
isascii() 如果字符串中的所有字符都来自 ASCII 字符集,则返回 True。 |
16 |
isdecimal() 如果 unicode 字符串仅包含十进制字符,则返回 true,否则返回 false。 |
17 |
isdigit() 如果字符串仅包含数字,则返回 true,否则返回 false。 |
18 |
isidentifier() 检查字符串是否是有效的 Python 标识符。 |
19 |
islower() 如果字符串至少有一个大小写字母且所有大小写字母均为小写,则返回 true,否则返回 false。 |
20 |
isnumeric() 如果 Unicode 字符串仅包含数字字符,则返回 true,否则返回 false。 |
21 |
isprintable() 检查字符串中的所有字符是否可打印。 |
22 |
isspace() 如果字符串仅包含空白字符,则返回 true,否则返回 false。 |
23 |
istitle() 如果字符串“标题化”正确,则返回 true,否则返回 false。 |
24 |
isupper() 如果字符串至少有一个大小写字母且所有大小写字母均为大写,则返回 true,否则返回 false。 |
25 |
join(seq) 使用分隔符字符串将序列 seq 中元素的字符串表示合并(串联)为一个字符串。 |
26 |
ljust(width[, fillchar]) 返回一个用空格填充的字符串,其中原始字符串左对齐,总共 width 列。 |
27 |
lower() 将字符串中的所有大写字母转换为小写。 |
28 |
lstrip() 删除字符串中所有前置空白。 |
29 |
maketrans() 返回用于 translate 函数的转换表。 |
30 |
partition() 在分隔符第一次出现时将字符串拆分为三个字符串元组。 |
31 |
removeprefix() 删除前缀字符串后返回一个字符串。 |
32 |
removesuffix() 删除后缀字符串后返回一个字符串。 |
33 |
replace(old, new [, max]) 用 new 替换字符串中 old 的所有出现,如果给出 max,最多替换 max 次。 |
34 |
../python/string_rfind.html[rfind(str, beg=0, end=len(string))]Same as find(), but search backwards in string. |
35 |
../python/string_rindex.html[rindex( str, beg=0, end=len(string))]Same as index(), but search backwards in string. |
36 |
rjust(width,[, fillchar]) 返回一个用空格填充的字符串,其中原始字符串右对齐,总共 width 列。 |
37 |
rpartition() 以分隔符最后出现的位置将字符串拆分为三个字符串元组。 |
38 |
rsplit() 从末尾拆分字符串并返回一个子字符串列表。 |
39 |
rstrip() 删除字符串的所有尾随空格。 |
40 |
../python/string_split.html[split(str="", num=string.count(str))]Splits string according to delimiter str (space if not provided) and returns list of substrings; split into at most num substrings if given. |
41 |
splitlines( num=string.count('\n')) 在所有(或num)换行符处拆分字符串,并返回一个列表,其中每行都已删除了换行符。 |
42 |
../python/string_startswith.html[startswith(str, beg=0, end=len(string))]Determines if string or a substring of string (if starting index beg and ending index end are given) starts with substring str; returns true if so and false otherwise. |
43 |
strip([chars]) 对字符串执行 lstrip() 和 rstrip()。 |
44 |
swapcase() 反转字符串中所有字母的大小写。 |
45 |
title() 返回字符串的“标题大小写”版本,即所有单词都以大写开头,其余为小写。 |
46 |
../python/string_translate.html[translate(table, ), deletechars=]Translates string according to translation table str(256 chars), removing those in the del string. |
47 |
upper() 将字符串中的小写字母转换为大写。 |
48 |
zfill (width) 返回用零左填充的原始字符串,总共width个字符;用于数字,zfill() 会保留给定的任何符号(减去一个零)。 |