Python字符串
字符串类型在Python中是最流行的。可以通过在引号包围的字符简单地创建它们。Python使用单引号和双引号来表示字符串是一样的。
创建字符串很简单,只要将值分配给一个变量。例如:
var1 = 'Hello World!' var2 = "Python Programming"
访问字符串值:
Python不支持字符类型;这些都被视为一个长度的字符串,因此也被认为是一个子串。
要访问子字符串,用方括号随着指数或索引来获得子切片。下面是一个简单的例子:
#!/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 | 铃声或警报 |
0x08 | 退格键 | |
cx | Control-x | |
C-x | Control-x | |
e | 0x1b | 转义 |
f | 0x0c | 换页 |
M-C-x | Meta-Control-x | |
0x0a | 新一行 | |
nn | 八进制表示法,其中n的范围为0.7 | |
0x0d | 回车 | |
s | 0x20 | 空格 |
0x09 | Tab键 | |
v | 0x0b | 垂直制表 |
x | 字符x | |
xnn | 十六进制表示法,其中n的范围是从0.9,a.f,或AF |
字符串特殊操作符:
假设字符串变量中保存'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' ' 打印 并且 print R' ' 打印 |
% | 格式 - 执行字符串格式化 | 请参阅下一节 |
字符串格式化操作:
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的简写 |
其他支持的符号和功能如下表:
符号 | 功能 |
---|---|
* | 参数指定宽度和精度 |
- | 左对齐 |
+ | 显示符号 |
<sp> | 一个正数前留一个空格 |
# | 添加前导零('0')或十六进制前导0x“或”0X“,取决于”x“或”X“是否使用八进制。 |
0 | 从键盘左边添加零(而不是空格) |
% | '%%'给留下一个文字'%' |
(var) | 映射变量(字典参数) |
m.n. | m是最小的总宽度和n是数字,显示小数点后的位数(如果appl) |
三重引号:
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 ( ) 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. """ print para_str;
当执行上面的代码中,产生以下结果。请注意如何每一个特殊字符被转换到打印形式,一直到最后的换行符之间的字符串“up”结束闭三重引号。还要注意的是发生或者使用显式回车在一行或它的转义代码( 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: owhere
现在利用原始的字符串。我们表达如下:
#!/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的包括以下内建的方法操作字符串:
SN | 方法及描述 |
---|---|
1 |
capitalize() 字符串的第一个字母大写 |
2 |
center(width, fillchar) 返回一个空格填充字符串为中心,以总宽度列的原始字符串 |
3 |
count(str, beg= 0,end=len(string)) 开始索引beg和结束索引结束str多少次出现在字符串或字符串的子串 |
4 |
decode(encoding='UTF-8',errors='strict') 使用注册编码的编解码器的字符串进行解码。编码默认为默认的字符串编码。 |
5 |
encode(encoding='UTF-8',errors='strict') 返回编码字符串的字符串版本;对错误,默认是引发ValueError除非错误被赋予了“ignore”或“replace”。 |
6 |
endswith(suffix, beg=0, end=len(string)) 判断字符串或字符串的一个子串(如果起始索引beg和给出end结束索引)与后缀结尾;如果是则返回true,否则为false, |
7 |
expandtabs(tabsize=8) 扩展选项卡中的字符串多个空格;如果未提供tab大小默认为每片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() 如果string至少有1个字符,所有字符为字母数字则返回true,否则为false |
11 |
isalpha() 如果string至少有1个字符,所有字符都是字母,否则为false,则返回true |
12 |
isdigit() 如果字符串只包含数字则返回true,否则为false |
13 |
islower() 如果字符串至少有1个字符,所有字符是小写则返回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() 返回要用于转换功能的转换表 |
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('
')) Splits string at all (or num) NEWLINEs and returns a list of each line with NEWLINEs removed |
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) 返回leftpadded零合共宽字符原字符串;用于数字zfill()保留给予任何迹象(减去一个零) |
40 |
isdecimal() 如果一个Unicode字符串只包含十进制字符则返回true,否则返回false |