1 基本字符串操作
-
说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大, 最小,判断成员资格等都可以应用在字符串上;
-
注意:字符串是不可变的,所以不能对其进行赋值;
-
例子
1: >>> mystr="Test string"2: >>> mystr[0] = 't'3: Traceback (most recent call last):4: File "<pyshell#1>", line 1, in <module>5: mystr[0] = 't'6: TypeError: 'str' object does not support item assignment7: >>>
2 字符串格式化:精简版
2.1 用字符串格式化操作符
-
说明:字符串格式化使用字符串格式化操作符百分号( % )实现,
-
在操作符的左侧是格式化字符串,右侧是希望被格式化的值;
-
注意:
-
只有元组和字典可以被格式化为一个以上的值,列表和其他序列会被格式化为一个值;
-
转换说明符,用于标记需要插入转换值的位置;
-
如果在格式化字符串中要输出百分号,%%
-
-
例子:
1: #一般格式化 -
2: >>> myformat = "Hello, my name is %s %s" -
3: >>> name = ('Bill','Gunn') -
4: >>> print (myformat % name) -
5: Hello, my name is Bill Gunn -
6: >>> -
7: -
8: #用列表格式化 -
9: >>> myformat = 'Hello, my name is %s' -
10: >>> name=['Bill', 'Gunn'] -
11: >>> print(myformat % name) -
12: Hello, my name is ['Bill', 'Gunn'] -
13: -
14: #打印浮点数 -
15: >>> import math -
16: >>> print ("PI = %.5f" % pi) -
17: PI = 3.14159 -
18: -
19: #打印百分号 -
20: >>> print("%.2f%%"% 22.3) -
21: 22.30% -
-
22: >>>
2.2 用string的Template格式化字符串
-
说明:类似于Unix Shell中的变量替换,使用substitute方法,将字符串 模板中的$foo替换为传递进来的参数foo
-
例子:
1: #从string模块中导入Template -
2: >>> from string import Template -
3: #创建模板 -
4: >>> myformat = Template("My name is $name") -
5: #替换变量并打印 -
6: >>> print(myformat.substitute(name="Bill Gunn")) -
7: My name is Bill Gunn -
8: >>> -
9: -
10: #输出美元符号的方法,在模板里输入两个$ -
11: >>> mytemplate = Template("The price is $$$price") -
12: >>> mytemplate.substitute(price=100) -
13: 'The price is $100' -
14: >>> -
15: -
16: #如果参数与后面的字符串相连,需要用大括号将其括起来 -
17: >>> from string import Template -
18: >>> mytemplate = Template("It's ${x}tastic!") -
19: >>> mytemplate.substitute(x='slum') -
20: "It's slumtastic!" -
21: >>> -
22: -
23: #使用字典替换参数 -
24: >>> mytemplate = Template("My $property is $value") -
25: >>> name = {} -
26: >>> name["property"] = "name" -
27: >>> name["value"] = "Bill Gunn" -
28: >>> mytemplate.substitute(name) -
29: 'My name is Bill Gunn' -
30: >>> -
31:
3 字符串格式化:完整版
-
说明:字符串格式化操作符的右操作数如果是元组,那么在格式化字符串 中必须将元组中的各个元素都有对应的转义说明符。
-
例子:
1: >>> data = tuple(list("123")) -
2: >>> data 3: ('1', '2', '3') -
4: #格式化字符串中只有一个转义说明符,而元组中有三个元素,转换会报错 -
5: >>> print ("data is %s" % data) -
6: Traceback (most recent call last): -
7: File "<pyshell#18>", line 1, in <module> -
8: print ("data is %s" % data) -
9: TypeError: not all arguments converted during string formatting -
10: #显示元组中的全部元素 -
11: >>> print ("data is %s %s %s" % data) -
-
12: data is 1 2 3 -
13: >>> -
14:
3.1 转换说明符
-
转换说明符
转义说明符 含义 d,i 带符号的十进制整数 o 不带符号的八进制 u 不带符号的十进制 x 不带符号的十六进制(小写) X 不带符号的十六进制(大写) e 科学计数法的浮点数(小写) E 科学计数法的浮点数(大写) f,F 十进制浮点数 g 如果指数大于-4或者小于精度值则和e相同,否则和f相同 G 如果指数大于-4或者小于精度值则和E相同,否则和F相同 C 单字符(接受整数或者单字符字符串) r 字符串(使用repr转换任意Python对象) s 字符串(使用str转换任意Python对象)
3.2 简单转换
-
例子:
1: #十进制整数 -
2: >>> print ("The price is $%d" % 12) -
3: The price is $12 -
4: -
5: #十六进制整数 -
6: >>> print ("Hex %x" % 12) -
7: Hex c -
8: -
9: #八进制整数10: >>> print ("Oct %o" % 12) -
11: Oct 14 -
12: >>> -
13:
3.3 字段宽度和精度
-
说明:
-
字段宽度:转换后的值所保留的最小字符个数;
-
字段精度:转换后,结果中应该的小数位数;
-
可以使用*作为字段宽度或者精度
-
-
例子:
1: #限制宽度 -
2: >>> "%10f" % math.pi -
3: ' 3.141593' -
4: -
5: #限制小数位数 -
6: >>> "%5.2f" % math.pi -
7: ' 3.14' -
8: -
9: #用星号限制宽度和精度,下例中,宽度为10,精度为5 -
10: >>> '%*.*s' % (10, 5, 'adfasdfadsfasdfasdfasdf') -
11: ' adfas' -
12: >>> -
13:
3.4 符号,对齐和 0 填充
-
说明:
-
零:宽度不够时用数字0填充;
-
负号:左对齐;
-
正号:不管是正数还是负数都标记出符号
-
空格:宽度不够时用空格填充;
-
-
例子:
1: #空白补0 -
2: >>> print ("%010f" % math.pi) -
3: 003.141593 -
4: -
5: #左对齐 -
6: >>> "%-10.2f" % math.pi -
7: '3.14 ' -
8: -
9: #空白右对齐 -
10: >>> print("% 5d\n% 5d" % (123, 12)) -
11: 123 -
12: 12 -
13: -
14: #显示正负符号 -
15: >>> print ("%+5d\n%+5d" % (123, -123)) -
16: +123 -
17: -123 -
18: >>> -
19:
4 字符串方法
4.1 find
-
说明:用于在长字符串中查找子字符串,如果找到,则返回子字符串在左 侧第一次出现的索引,没找到返回-1,在查找时,还可以指定在长字符串 中查找的范围,提供起始索引和结束索引作为查找的参数;
-
注意:查找时,包括起始索引位置,但是不包括结束索引的位置;
-
例子:
1: >>> string.ascii_letters -
2: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' -
3: >>> letters = string.ascii_letters -
4: >>> letters.find('AB') -
5: 26 -
6: >>> letters.find('X',30,-1) -
7: 49 -
8: >>> letters.find("AB",26) -
9: 2610:
4.2 join
-
说明:将队列中的元素用字符串连接起来,并且列表中的元素必须是字符 串;
-
例子:
1: >>> data = list('123456') -
2: >>> data -
3: ['1', '2', '3', '4', '5', '6'] -
4: >>> "AB".join(data) -
5: '1AB2AB3AB4AB5AB6' -
6: >>> 7:
4.3 lower
-
说明:将字符串转换成小写字母,并返回,但是原字符串不改变;
-
例子:
1: >>> mystr="ABCD" -
2: >>> mystr.lower() -
3: 'abcd' -
4: >>> mystr -
5: 'ABCD' -
6: >>> 7:
4.4 replace
-
说明:返回所有匹配项都被替换之后的字符串
-
例子:
1: >>> mystr = "My name is Geng Qi" -
2: >>> mystr.replace("Geng Qi", "Bill Gunn") -
3: 'My name is Bill Gunn' -
4: >>>
4.5 split
-
说明:将字符串分割成序列;
-
注意:如果不提供分割符,则会将空白符当作分割符;
-
例子
1: #以加号为分割符 -
2: >>> mystr = "1+2+3+4+5+6" -
3: >>> mystr.split('+') -
4: ['1', '2', '3', '4', '5', '6'] -
5: -
6: #不提供分割符时,以空白符为分割符 -
7: >>> mystr = "This is a test string" -
8: >>> mystr.split() -
9: ['This', 'is', 'a', 'test', 'string'] -
10: >>> 11:
4.6 strip
-
说明:去除两侧的空白,也可以去除指定的字符;
-
例子:
1: >>> mystr = " asdfad adfasf asdf " -
2: >>> mystr -
3: ' \tasdfad adfasf asdf \t\t' -
4: #去除空白符 -
5: >>> mystr.strip() -
6: 'asdfad adfasf asdf' -
7: -
8: #去除指定字符 -
9: >>> mystr.strip('\t') -
10: ' \tasdfad adfasf' asdf ' -
11: >>> -
12:
4.7 translate
-
说明:translate是单字替换,可以同时替换多个字符
-
例子:
1: >>> table = str.maketrans('cs', 'kz') -
2: >>> table -
3: {115: 122, 99: 107} -
4: >>> "Please don't knock at my door!".translate(table) -
5: "Pleaze don't knokk at my door!" -
6: -
本文深入探讨了Python中字符串的基本操作、格式化方法及高级应用,包括分片、乘法、索引、求长度、最大值、最小值判断、成员资格检查、字符串式化、模板式化以及完整版字符串式化。文章详细介绍了转换说明符、字段宽度、精度、符号、对齐和0填充等特性,并通过实例展示了如何高效地进行字符串处理。
4302

被折叠的 条评论
为什么被折叠?



