字符串操作
字符串和切片
Python中的字符串也可以理解为由一系列字符组成的列表。我们在此介绍的字符串的切片方法也同样适用于Python的元组和列表等其他数据结构。
使用方括号[ ]通过元素索引访问字符元素,与访问列表等其他数据结构的元素一致。需要注意的是,与R语言不同,Python的索引从0而不是1开始。
x = 'This is a string'
x[0]
x[2]
结果
'T'
'i'
索引也可以是形如[<起始值>:<终止值>]的形式。需要注意的是,与R语言不同,Python中的切片并不包括索引为<终止值>所对应的元素。如[0:1]表示第1个元素,[0:2]表示第1和2个元素。如果省略<起始值>或<终止值>则表示从第1个元素开始或到最后1个元素为止。索引还可以使负整数。需要注意的是,与R语言不同,Python中的负整数索引表示从末尾开始而不是排除。
x[0:1]
x[0:2]
x[:2]
x[2:]
x[-1]
x[-4:-2]
结果
'T'
'Th'
'Th'
'is is a string'
'g'
'ri'
字符串的格式化显示
字符串的格式化显示用于将其他类型数据转换为字符串进行显示,形式为"<格式字符串>" %<待格式化对象>。下表列出了常用的格式字符。
以下例子将整数以八进制和十六进制整数形式显示。
"%o" %1235
"%x" %1235
结果
'2323' #八进制
'4d3' #十六进制
待格式化的对象必须与格式字符串的意义一致。 将字符串以十进制整数形式显示,虽然字符串的内容是整数,但仍然会产生异常。
调用函数int()将内容为整数的字符串转换为整数。
调用函数str()将任意类型的对象转换为字符串。
调用格式字符串的函数format()将输入对象做格式化显示,可以使用索引。
以下例子将浮点型对象1/3格式化显示为保留3位小数。将整数型格式化显示为整数、十六进制整数和八进制整数。
'{0:.3f}'.format(1/3)
"The number {0:,} in hex is : {0:#x}, in oct is {0:#o}".format(55)
结果
'0.333'
'The number 55 in hex is : 0x37, in oct is 0o67'
以下例子将包含元组的列表格式化显示。
weather = [("Monday","rain"),("Tuesday","sunny"),("Wednesday","sunny"),("Thursday","rain"),("Friday","Cloudy")]
formatter = "Weather of '{0[0]}' is '{0[1]}'".format
for item in weather:
print(formatter(item))
结果:
Weather of 'Monday' is 'rain'
Weather of 'Tuesday' is 'sunny'
Weather of 'Wednesday' is 'sunny'
Weather of 'Thursday' is 'rain'
Weather of 'Friday' is 'Cloudy'
字符串常用操作
使用加号运算符+连接字符串。加号运算符+的操作对象必须是相同类型,例如都是字符串,否则会产生异常。
调用字符串的函数split()将字符串按指定分隔符分隔成若干子串,其中第1个参数sep表示分隔符。
x = 'This is a string'
x.split(" ")
结果
['This', 'is', 'a', 'string']
调用字符串的函数join()将输入列表的字符串元素以该字符串为分隔符连接生成一个新的字符串,函数的对象表示分隔符。
seq =("a", "b", "c")
"-".join(seq)
结果:
'a-b-c'
调用字符串的函数find()查找子字符串在原字符串指定范围中的首次出现索引,如果不存在则返回-1,其中
函数的对象表示原字符串;
第1个参数sub表示子字符串;
第2个参数start表示查找范围的起始索引;
第3个参数end表示查找范围的结束索引。
s = "apple,peach,banana,peach,pear"
s.find("peach")
s.find("peach", 10)
6
19
调用字符串的函数count()得到子字符串出现的次数,如果不存在则返回0。参数与函数find()一致。
s.count("p")
5
调用字符串的函数partition()将字符串按指定分隔符分隔为包含3个元素的元组:
分隔符第一次出现之前的字符串;
分隔符字符串;
分隔符第一次出现之后的字符串。
print(s.partition(","))
结果('apple', ',', 'peach,banana,peach,pear')