Wednesday 29 November 2017

Python拾遗(二)strip()和split()函数

MarkdownPad Document

最近经常遇到strip()split()这两个字符串操作函数,现在记录下来,防止自己忘记。

1. strip()函数原型:

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

  • s.strip(rm) 删除位于字符串开头结尾,同时位于rm删除序列中的字符。
  • s.lstrip(rm)删除位于字符串开头,同时位于rm删除序列中的字符。
  • s.rstrip(rm)删除位于字符串结尾,同时位于rm删除序列中的字符。

示例代码:

>>> a="hheloooo goooodbyyyye"
>>> a.strip('helo ') # 注意这里有空格
'goooodbyyyy'
>>> a.strip('he')
'loooo goooodbyyyy'
>>> a.strip('o')
'hheloooo goooodbyyyye'

函数作用方式解析:

我们以

 a.strip('he')

这段代码为例: strip()函数从字符串a的首尾开始寻找含有'he'的字符,在开头找到了第一个'h',将其去掉,紧接着寻找第二个字符,发现又是'h',同时也将其去掉,以此类推,直到找到第一个不包含在'he'字符集中的字符,停止删除。结尾也同理。其他两个函数lstrip()rstrip()同理。这就是这个函数的作用方式。但是其具体是如何作用的,我没有考证过,希望有高人可以给予指点。

默认参数:

当rm为空时,strip()函数默认删除string结尾的空白符,包括\n,\t等。

示例代码:

 >>> a='    a\n\tbc'
 >>> print a
a
   bc
>>> a.strip()
'a\n\tbc'
>>> a='  abc'
>>> a.strip()
'abc'
>>> a='\n\tabc'
>>> a.strip()
'abc'
>>> a='abc\n\t'
>>> a.strip()
'abc'

注意

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

示例代码:

>>> a='123abc'
>>> a.strip('21')
'3abc'
>>> a.strip('12')
'3abc'
>>> a.strip('1a')
'23abc'

2. split()函数原型:

split的英文翻译是分割的意思。Python split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔num个子字符串,同时将分割好的字符放在列表里。

示例代码:

>>> a='a b c d'
>>> a.split()
['a', 'b', 'c', 'd']

通过上述例子我们可以看出,当没有参数时,split()函数是以空格作为分割符的。

同时,我们可以传入参数,根据自己实际的需求进行分割:

示例代码:

>>> c='name=ding|age=25|job=it'
>>> c.split('|')
['name=ding', 'age=25', 'job=it']
>>> c.split('|')[0].split('=')
['name', 'ding']

还可以带上数字参数,表示“切几刀”如:

示例代码:

>>> d='a b c d e'
>>> d.split(' ',1)#以空格“切一刀”,就分成两块了
['a', 'b c d e']
>>> d.split(' ',2)
['a', 'b', 'c d e']
>>> d.split(' ',3)
['a', 'b', 'c', 'd e']
>>> d.split(' ',-1) #d.split(' ')结果一样
['a', 'b', 'c', 'd', 'e']
>>> d.split(' ')
['a', 'b', 'c', 'd', 'e']

最后,记录一个极好的例子:

>>> str="hello boy<[www.doiido.com]>byebye"
>>> str.split("[")[1].split("]")[0]
'www.doiido.com'
>>> str.split("[")[1].split("]")[0].split(".")
['www', 'doiido', 'com']

No comments:

Post a Comment