三、使用字符串

1、字符串基本操作

所有的标准序列操作都适用于字符串,但是字符串不可变,所以不可以给字符串赋值。

2、设置字符串的格式

替换字段名

在最简单的情况下,只需向format提供要设置其格式的未命名参数,并在格式字符串中使用未命名字段。此时,将按顺序将字段和参数配对。你还可以给参数指定名称,这种参数将被用于相应的替换字符中。

>>> "{foo}{}{bar}{}".format(1,2,bar=4,foo=3)

'3142'

还可以通过索引来指定使用的未命名参数

>>> "{foo}{1}{bar}{0}".format(1,2,bar=4,foo=3)

'3241'

基本转换

指定要在字段中包含的值后,就可添加有关如何设置其格式的指令了。首先,可以提供转换标志。

>>> print("{pi!s}{pi!r}{pi!a}".format(pi="π"))

π'π''\u03c0'

上面三个标志(s,r和a)指定分别使用str、repr和ascii进行转换。

类型说明符:

类型

含义

b

将整数表示为二进制数

c

将整数解读为Unicode码点

d

将整数视为十进制数进行处理,这是整数默认的说明符

e

使用科学表示法来表示小数(用e来表示指数)

E

与e相同,但使用E来表示指数

f

将小数表示为定点数

F

与f相同,但对于特殊值(nan和inf),使用大写表示

g

自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位 小数

G

与g相同,但使用大写来表示指数和特殊值

n

与g相同,但插入区域而异的数字分隔符

o

将整数表示为八进制数

s

保持字符串的格式不变,这是默认用于字符串的说明符

x

将整数表示为十六进制数并使用小写字母

X

与x相同,但使用大写字母

%

将数表示为百分比值

宽度、精度和千位分隔符

设置浮点数的格式时,默认在小数点后面显示6位小数,并根据需要设置的宽度,而不进行任何填充。

宽度使用整数指定:

>>> "{num:10}".format(num=3)

' 3'

>>> "{name:10}".format(name="Bob")

'Bob '

精度也通过指定,但需要在它前面加一个表示小数点的句点。

"Pi day is {pi:.2f}".format(pi=pi)

Traceback (most recent call last):

File "", line 1, in

ps:应该是会返回π的值的,不知道为什么报错了

最后,可使用逗号来指出你要添加

千位分隔符

>>> 'One googli is {:,}'.format(10**100)

'One googli is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000'

3、字符串方法

只介绍几个重要的

3.1、center

方法center通过在两边添加填充字符(默认为空格)让字符串居中。

>>> "The Middle by Jimmy Eat World".center(39)

' The Middle by Jimmy Eat World '

>>> "The Middle by Jimmy Eat World".center(39,"*")

'*****The Middle by Jimmy Eat World*****'

3.2、find

方法find在字符串中查找子串。如果找到,就返回子串第一个字符的索引,否则返回-1

>>> title = "Monty Python's Flying Circus"

>>> title.find('Monty')

0

3.3、join

join是一个非常重要的字符串方法,其作用与split相反,用于合并序列的元素

>>> seq = ['1','2','3','4','5']

>>> sep = '+'

>>> sep.join(seq)

'1+2+3+4+5'

3.4、lower

方法lower把字符串全部小写后返回

>>> 'ABCDEFG'.lower()

'abcdefg'

title

方法,让字符串中每个单词首字母大写,使用方法同lower

3.5、replace

将指定的子串都替换为另一个字符串,并返回结果

>>> 'This is a test'.replace('is','eez')

'Theez eez a test'

3.6、split

重要的字符串方法,作用与join相反,用于将字符串拆分为序列

>>> '1+2+3+4+5'.split('+')

['1', '2', '3', '4', '5']

3.7、strip

方法strip将字符串开头和末尾的空白(不包括中间)删除,并返回结果。

>>> ' internal whitespace is kept '.strip()

'internal whitespace is kept'

ps:有只删除开头空白和值删除结尾空白的方法

可以指定参数删除哪些字符(开头结尾的)

>>> '*** SPAM * for * everyone!!!***'.strip(' *!')

'SPAM * for * everyone'

这里指定的是删除空白,感叹号和星号

3.8、translate

与replace一样替换字符串的特定部分,但不同的是它可以同时替换多个字符,但使用前要创建转换表。

>>> table = str.maketrans('cs','kz')

转换表如上,参数是两个长度相等的字符串,使用时第一个字符串中的每个字符都替换为第二个字符串中对应的字符

>>> 'this is an incredible test'.translate(table)

'thiz iz an inkredible tezt'

如上,所有c被换成k,所有s被换成z

在创建转换表时可以使用第三个参数,指定要删除的内容。如下,被删除的为空格

>>> table = str.maketrans('cs','kz',' ')

>>> 'this is an incredible test'.translate(table)

'thizizaninkredibletezt'