python基础教程总结2——字符串

1.基本操作

  序列操作:索引,分片,乘法,判断成员资格,长度,最值......

注:字符串不可变,分片赋值不合法

2.字符串格式化

模板

  格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。

print("I'm %s. I'm %d year old" % ('Vamei', 99))

  "I'm %s. I'm %d year old" 为我们的模板。%s为第一个格式符,表示一个字符串。%d为第二个格式符,表示一个整数。('Vamei', 99)的两个元素'Vamei'和99为替换%s和%d的真实值。 
  在模板和tuple之间,有一个%号分隔,它代表了格式化操作。

  整个"I'm %s. I'm %d year old" % ('Vamei', 99) 实际上构成一个字符串表达式。我们可以像一个正常的字符串那样,将它赋值给某个变量。比如:

a = "I'm %s. I'm %d year old" % ('Vamei', 99)
print(a)

我们还可以用词典来传递真实值。如下:

print("I'm %(name)s. I'm %(age)d year old" % {'name':'Vamei', 'age':99})

可以看到,我们对两个格式符进行了命名。命名使用()括起来。每个命名对应词典的一个key。

格式符

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%"

可以用如下的方式,对格式进行进一步的控制:

  %[(name)][flags][width].[precision]typecode

  (name)为命名

  flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

  width表示显示宽度

  precision表示小数点后精度

print("%+10x" % 10)
print("%04d" % 5)
print("%6.3f" % 2.3)

上面的width, precision为两个整数。我们可以利用*,来动态代入这两个量。比如:

print("%.*f" % (4, 1.2))

Python实际上用4来替换*。所以实际的模板为"%.4f"。

3.字符串方法

(1)、find

  find方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果没有找到则返回-1。

(2)、join

  语法:  'sep'.join(seq)

  参数说明:

      以sep作为分隔符,将seq所有的元素合并成一个新的字符串
      sep:分隔符。可以为空
      seq:要连接的元素序列、字符串、元组、字典

  返回值:返回一个以分隔符sep连接各个元素后生成的字符串

  join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素:

  注意:需要添加的队列元素都必须是字符串。

>>> s = ['1', '2', '3']
>>> '+'.join(s)
'1+2+3'

(3)、lower

  lower方法返回字符串的小写字母版。

(4)、replace

    stringObj.replace(rgExp, replaceText)

  replace方法返回某个字符串的所有匹配项均被替换之后得到的字符串。

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

(5)、split

  这是个非常重要的字符串方法,它是join的逆方法,用来将字符串分割成序列。

>>> '1+2+3+4'.split('+')
['1', '2', '3', '4']
>>> '1 2 3 4'.split()
['1', '2', '3', '4']

  如果不提供任何分隔符,程序会把所有空格作为分隔符(空格、制表、换行等)。

(6)、strip

函数原型

  声明:s为字符串,rm为要删除的字符序列

    s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符

    s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符

    s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符

注意:

  1). 当rm为空时,默认删除空白符(包括' ', ' ',  ' ',  ' ')

>>> a = '     123'
>>> a.strip()
'123'
>>> a=' abc'
'abc'
>>> a = 'sdff '
>>> a.strip()
'sdff'

  2).这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

>>> a = '123abc'
>>> a.strip('21')
'3abc'   结果是一样的
>>> a.strip('12')
'3abc'
 

(7)、translate

  translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的优势在于可以同时进行多个替换,有些时候比replace效率高得多。

  在使用translate转换前,需要先完成一张转换表。转换表中是以某字符替换某字符的对应关系。因为这个表(事实上是字符串)有多达256个项目,我们还是不要自己写了,用string模块里面的maketrans函数就行了。

  maketrans函数接收两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中相同位置的字符替换。

>>> from string import maketrans
>>> table = maketrans('cs', 'kz')

  创建这个表后,可以将它用作translate方法的参数,进行字符串的转换:

>>> 'this is an incredible test'.translate(table)
'thiz iz an inkredible tezt'

  translate的第二个参数是可选的,这个参数是用来指定需要删除的字符。

>>> 'this is an incredible test'.translate(table, ' ')
'thizizaninkredibletezt'
原文地址:https://www.cnblogs.com/zxqstrong/p/4643390.html