字符串

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效率高得多。

  

posted on 2016-01-26 00:34  揉碎的青春  阅读(205)  评论(0编辑  收藏  举报

导航