1.基本字符串的操作
所有标准序列的操作(索引,分片,乘法,成员资格判断,求长度,取最小和最大值)同样适用,但是记住:字符串都是不可变的。
2.字符串格式化:精简版
字符串的格式化可以使用字符串格式化操作符——百分号(%)来实现。
在%的左侧放置一个字符串(格式化字符串),而右侧放置希望被格式化的值。可以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者后面将讨论的 字典,一般情况下使用元组:
>>> values=('sun','hou')
>>> format="Hello,%s and %s"
>>> print format % values
Hello,sun and hou
格式化字符串的%s称为转换说明符(conversion speciffer),它们标记了需要插入转换值 的位置。s表示值会被格式化为字符串——如果不是字符串,则会将其转换为字符串,这个方法对大多数值都有效。
注意:如果要加格式化字符串里包括百分号,则必须使用%%,这样python就不会将其误认为是转换说明符了。
如果要格式化实数(浮点数),可以使用f说明转换说明符的类型,同时需要提供精度:一个句点加上希望保存的小数位数。
>>> format="Pi is %.9f"
>>> from math import pi
>>> print format % pi
Pi is 3.141592654
3.字符串格式化:完整版
如果右操作数是元组或映射类型(入字典),那么字符串格式化将会有所不同。我们还没有讲到映射(如字典),在这里先了解一下元组,在以后我们将会详细介绍映射的格式化。
如果右边操作数是元组的话,则其中的每一个元素都会被单独格式化,每一个值都需要对应一个转换说明符。
注意:如果需要转化的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以防出错:
>>> '%s plus %s equals %s' % (1,1,2)
'1 plus 1 equals 2'
>>> '%s plus %s equals %s' % 1,1,2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
(1)简单转换
简单的转换只需要写出转换类型,使用起来很简单:
>>> '%d' % 42
'42'
>>> '%x' % 42
'2a'
>>> '%.2f' % 42
'42.00'
>>> '%s' % 42L
'42'
>>> '%r' % 42L
'42L'
(2)字段宽度和精度
字段宽度是转换后所保存的最小字符个数,字段精度是转换后所保存的小数位。两个参数通过点号(.)分隔,前面的是字段宽度,后面的是字段精度。
>>> '%d' % 42
'42'
>>> '%x' % 42
'2a'
>>> '%.2f' % 42
'42.00'
>>> '%s' % 42L
'42'
>>> '%r' % 42L
'42L'
>>> '%10f' % 123
'123.000000'
>>> '%10.2f' % 123
' 123.00'
>>> '%.5s' % 'hello dasd'
'hello'
>>> '%10.5s' % 'hello dasd'
' hello'
>>> '%10.10s' % 'hello dasd'
'hello dasd'
(3)符号、对齐和用0补齐
在字符宽度和字符精度之前还可以放置一个标志,该标志可以是0、+、-或空格。
零表示数字将会用0来填充:
>>> '%5.1f' % 0.1
' 0.1'
>>> '%05.1f' % 0.1
'000.1'
注意,这里的0开头,并不意味着字段宽度说明符为8进制。它只是个普通的Python数值。
减号(-)用来左对齐数值:
>>> '%10.0f' % 1
' 1'
>>> '%-10.0f' % 1
'1 '
空格(” “)用来在正数时候加上空格,这时候需要对齐复数很有用:
>>> '% .0f' % 1
' 1'
>>> '% .0f' % -1
'-1'
加号(+)不管正数负数都标出符号
4.字符串方法
字符串的方法非常多,这里只介绍几个常用的字符串的方法:
(1)find
find方法在一个字符串中查找字串。它将返回所在位置最左端索引。如果没有找到返回-1
>>> 'hello word'.find('l')
2
>>> 'hello word'.find('ws')
-1
这个方法还接受提供起始点和结束点参数(所搜范围包含起始点,不包含结束点),在python中,这是个惯例。
>>> 'hello word'.find('o',4,9)
4
>>> 'hello word'.find('o',5,9)
7
>>> 'hello word'.find('o',5,7)
-1
(2)join
join方法是split方法的逆方法,用来连接序列中的字符串:
>>> a=['a','b','c','d']
>>> b='+'
>>> b.join(a)
'a+b+c+d'
(3)lower
lower方法返回字符串的小写
>>> 'AbCd'.lower()
'abcd'
(4)replace
replace方法返回某字符串的所有匹配项均被替换后得到的字符串:
>>> a='hello word'
>>> a.replace('l','2')
'he22o word'
(5)split
这是一个非常重要的方法,它是join的逆方法,用来把字符串分割成序列
>>> a='a+b+c'
>>> a.split('+')
['a', 'b', 'c']
(6)strip
strip用来除去字符串两侧(不包含内部)的空格
>>> a=' sad '
>>> a.strip()
'sad'