所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串。但是字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的。
字符串格式设置运算符——百分号。 与c语言中的printf类似,%左边指定一个字符串(格式字符串),并在右边指定要设置其格式的值。在指定要设置其格式的值时,可以使用单个值(如字符串或者数字),可使用元组(如果要设置多个值的格式),还可以使用字典。
>format = "hello, %s.%s enough for ya?" >values = ('world', 'Hot') >format % values 'hello, world.Hot enough for ya?'其中%s称为转换说明符,指出要将值插入的位置。如果指定的值不是字符串,将使用str将其转换成字符串。
模版字符串:
>from string import Template >tmp1=Template("Hello, $who! $what enough for ya?") >tmp1.substitute(who="Mars", what="Dusty") 'Hello, Mars! Dusty enough for ya?'最简单情况下,替换字段没有名称或将索引作名称。
>"{},{} and {}".format("first", "second", "thrid") 'first,second and thrid'还可使用索引:
>"{2},{0} and {1}".format("second", "thrid", "first") 'first,second and thrid'命名字段工作原理:
>from math import pi >"{name} is approximately {value:0.2f}.".format(value = pi, name="pi") 'pi is approximately 3.14.'如果变量与替换字段同名,还可以使用一种简写,即使用f字符串——在字符串前面加上f:
>from math import e >f"Euler's constant is roughly {e}." "Euler's constant is roughly 2.718281828459045."仅介绍常见的一些方法
该方法通过在两边添加填充字符让字符串居中
>"The Middle by Jimmy Eat World".center(39) ' The Middle by Jimmy Eat World '该方法在字符串中查找字串,如果找到字串就返回字串第一个字的索引,否则返回-1:
>a="The Middle by Jimmy Eat World" >a.find("by") 11 >a.find("aa") -1注意:find方法可指定起点和终点,分别为第二个和第三个参数。
该方法用于合并序列的元素:
>a=['1','2','3','4'] >b='+' >b.join(a) '1+2+3+4'返回字符串的小写版本:
>a="The Middle by Jimmy Eat World" >a.lower() 'the middle by jimmy eat world'该方法将指定子串替换为另一个字符串并返回替换后的结果
>a="The Middle by Jimmy Eat World" >a.replace('by','to') 'The Middle to Jimmy Eat World'该方法将字符串拆分为序列。
>c="1+2+3+4" >c.split('+') ['1', '2', '3', '4']该方法将字符串开头和末尾的空白(不包括中间的空白)删除,并返回删除后的结果。
>d=" The Middle by Jimmy Eat World " >d.strip() 'The Middle by Jimmy Eat World'也可指定要删除的字符,但只能删除开头和末尾的相应字符
>d="*****!!! The *Middle !by !!Jimmy **Eat World***!!!!!" >d.strip('*!') ' The *Middle !by !!Jimmy **Eat World'该方法也是进行字符串的特定部分替换,但不同的是它只能进行单字符替换,相比于replace的优势在于能够同时替换多个字符,效率更高。但使用前必须创建一个转换表,简单举例:
>table = str.maketrans('cs','kz') >'this is an increadible test'.translate(table) 'thiz iz an inkreadible tezt'