【python cookbook】【字符串与文本】11.从字符串中去掉不需要的字符

左心房为你撑大大i 提交于 2020-03-01 14:25:50

问题:在字符串的开始、结尾或中间去掉不需要的字符,比如说空格符

解决方案:

1、字符串开始或结尾处去掉字符:str.strip()

2、从左或从右侧开始执行去除字符:str.lstrip()、str.rstrip()

3、对位于字符串中间的进行去除字符:str.replace()、re.sub()

Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> s=' hello world \n'
>>> s.strip()
'hello world'
>>> s.lstrip()
'hello world \n'
>>> s.rstrip()
' hello world'
>>> t='----hello===='
>>> t.lstrip('-')
'hello===='
>>> t.rstrip('=')
'----hello'
>>> t.strip('-=')
'hello'
>>> s2=' hello   world   \n'
>>> s2.strip()#对中间的空格不起作用
'hello   world'
>>> s2.replace(' ','')
'helloworld\n'
>>> import re
>>> re.sub('\s+',' ',s2)
' hello world '
>>> re.sub('\s+','',s2)
'helloworld'
>>> 

通常遇到的情况是将去除字符的操作同某些迭代器结合起来,比如说从文件中读取文本行。此时,就是生成器表达式大显身手的时候了,例如:

with open('test.txt') as f:
    lines=(line.strip() for line in f)
    for line in lines:
        print(line)
>>> ================================ RESTART ================================
>>> 
hello    world
hello  world
hello    world
>>> 

lines=(line.strip() for line in f)的作用是完成数据的转换,它很高效,因为这里并没有先将数据读取到任何形式的临时列表中,它只是创建一个迭代器,在所有产生出的文本行上都会执行strip()操作。

对于更高级的strip()操作,请见下一节的translate()方法。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!