字符串
1.基本字符串操作.
所有标准的序列操作(索引、分片、乘法、、判断成员资格、求长度、取最小值、取最大值)对字符串同样适用。
注意:字符串都是不可变的,因此任何改变字符串的操作都是不合法的。
2.字符串格式化:精简版
字符串格式化适用字符串格式化操作符即百分号%来实现。
在%左侧放置一个字符串(格式化字符串),而右侧则放置希望被格式化的值。可以使用一个值,入一个字符串或者数字,也可以使用多个值的元组或者字典。
一般情况下使用元组,示例如下:
1 >>>format = "hello,%s. %s enough for ya" 2 >>>values = ('world','hot') 3 >>>print format % values 4 hello,world. hot enough for ya
注意:如果使用列表或者其他序列代替元组,那么序列会被解释成为一个值。只有元组和字典可以格式化一个以上的值。
格式化字符串的%s部分称为转换说明符(conversion specifier),它们标记了需要插入转换值得位置。s表示值会被格式化为字符串——如果不是字符串,则会用str将其转换为字符串。这个方法大多数值都有效。
注意:如果在格式化字符串里面包含了百分号,那么必须使用%%,这样python就不会将百分号误认为是转换说明符了。
3.字符串格式化:完整版
3.1 简单转换
1 >>> from math import pi 2 >>> pi 3 3.141592653589793 4 >>> 'Price of %s: $%d' %('eggs',42) 5 'Price of eggs: $42'
3.2 字段宽度和精度
转换说明符可以包括字段宽度和精度。字段宽度是转换后的子所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数,或者(对于字符串转换来说)是转换后的 值所能包含的最大字符个数。
示例如下:
>>> '%10f' % pi #字段宽度 10 ' 3.141593' >>> '%10.2f' % pi #字段宽度 10,精度 2 ' 3.14' >>> '%.2f' % pi #精度 2 '3.14'
可以使用*来作为字段宽度或者精度,此时数值会从元组参数中读出:
1 >>> '%.*s' %(5,'Guido van Rossum') 2 'Guido' 3 >>> '%.*s' %(6,'Guido van Rossum') 4 'Guido ' 5 >>> '%.*s' %(10,'Guido van Rossum') 6 'Guido van '
3.3 符号、对齐和用0填充
在字段宽度和精度值之前还可以放置一个“标识”,该标识可以是0、+、-或者空格。
示例如下:
1 >>> '%010.2f' % pi 2 '0000003.14'
注意:在010中开头的那个0并不意味着段宽度说明符为八进制数,他只是个普通的python数值。当使用010作为字段宽度说明符的时候,表示字段宽度为10,用0补充。
字符串格式化示例:
1 #使用给定的宽度打印格式化后的价格列表 2 width = input('please enter width: ') 3 width = int(width) 4 5 price_width = 10 #定义价格字段宽度 6 item_width = width - price_width #定义菜单裂变宽度 7 8 header_format = '%-*s%*s' #定义表头格式 9 formats = '%-*s%*.2f' #定义列表格式 10 11 print('='*width) #打印 12 13 #打印表头 14 print(header_format%(item_width,'Item',price_width,'Price')) 15 16 print('-' * width) 17 18 #打印商品列表 19 print(formats%(item_width,'Apples',price_width,0.4)) 20 print(formats%(item_width,'Pears',price_width,0.5)) 21 print(formats%(item_width,'Cantaloupes',price_width,1.92)) 22 23 print('=' * width) 24 25 """ 26 结果: 27 please enter width: 35 28 =================================== 29 Item Price 30 ----------------------------------- 31 Apples 0.40 32 Pears 0.50 33 Cantaloupes 1.92 34 =================================== 35 """
4. 字符串方法
4.1 find
find方法可以在一个较长的字符串中查找子串。它返回子串所在位置的最左端索引。如果没有找到则返回-1
示例如下:
1 >>> title = 'hello python!' 2 >>> title.find('jim')#找不到返回-1 3 -1 4 >>> title.find('hello')#找到返回最左端索引 5 0
注意:与find有相似功能的有in,但in操作符只能用来查找字符串中的单个字符。find方法并不发回布尔值。
这个方法还可以接收可选的起始点和结束点参数,示例如下:
1 >>> subject = '$$$ Get rich now!!!$$$' 2 >>> subject.find('$$$') 3 0 4 >>> subject.find('$$$',1) #只提供起始点 5 19 6 >>> subject.find('!!!') #只提供起始点 7 16 8 >>> subject.find('!!!') #提供起始点和结束点 9 16 10 >>> subject.find('!!!',0,16) #提供起始点和结束点 11 -1
4.2 join
join方法是非常重要的字符串方法,他是split方法的逆方法,用来连接序列中的元素:
1 >>> seq = [1,2,3,4,5] 2 >>> swp = '+' 3 >>> swp.join(seq) #连接字符串列表 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: sequence item 0: expected str instance, int found 7 >>> seq = ['1','2','3','4','5'] 8 >>> swp = '+' 9 >>> swp.join(seq) 10 '1+2+3+4+5'
4.3 splist
splist方法用来将字符串分割成序列。示例如下:
1 >>> '1+2+3+4+5'.split('+') 2 ['1', '2', '3', '4', '5']
4.4 strip
strip方法返回去除两侧(不包含内部)空格的字符串:
1 >>> ' hello,python '.strip() 2 'hello,python'
strip方法和lower方法一起使用的话就可以很方便的对比输入的和存储的值。
4.5 translate
translate方法和replace方法一样,可以替换字符串中的某写部分,但是和前者不同的是,translate方法只处理单个字符。他的优势在于可以同时进行多个替换,有些时候 比replace效率高得多。