Python实用技法第30篇:从字符串中去掉不需要的字符

栏目: Python · 发布时间: 5年前

内容简介:上一篇文章:下一篇文章:我们想在字符串的开始、结尾或中间去掉不需要的字符,比如说空格符。

上一篇文章: Python实用技法第29篇:用正则表达式处理Unicode字符

下一篇文章:

问题

我们想在字符串的开始、结尾或中间去掉不需要的字符,比如说空格符。

解决方案

strip()方法可用来从字符串的开始和结尾处去掉字符。lstrip()和rstrip()可分别从左或从右侧开始执行去除字符的操作。默认情况下这些方法去除的是空格符,但也可以指定其他的字符。例如:

>>> # Whitespace stripping
>>> s = ' hello world \n'
>>> s.strip()
'hello world'
>>> s.lstrip()
'hello world \n'
>>> s.rstrip()
' hello world'
>>>

>>> # Character stripping
>>> t = '-----hello====='
>>> t.lstrip('-')
'hello====='
>>> t.strip('-=')
'hello'

讨论

当我们读取并整理数据以待稍后的处理时常常会用到这类strip()方法。例如,可以用它们来去掉空格、移除引号等。

需要注意的是,去除字符的操作并不会对位于字符串中间的任何文本起作用。例如:

>>> s = ' hello    world     \n'
>>> s = s.strip()
>>> s
'hello       world'
>>>

如果要对里面的空格执行某些操作,应该使用其他技巧,比如使用replace()方法或正则表达式替换。例如:

>>> s.replace(' ', '')
'helloworld'
>>> import re
>>> re.sub('\s+', ' ', s)
'hello world'
>>>

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

with open(filename) as f:
    lines = (line.strip() for line in f)
    for line in lines:
        ...

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

对于更高级的strip操作,应该转而使用translate()方法。请参见下一节以获得进一步的细节。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算几何

计算几何

邓俊辉 / 清华大学出版社 / 2009-6 / 49.00元

《计算几何:算法与应用(第3版)》的前4章对几何算法进行了讨论,包括几何求交、三角剖分、线性规划等,其中涉及的随机算法也是《计算几何:算法与应用(第3版)》的一个鲜明特点。第5章至第10章介绍了多种几何结构,包括几何查找、kd树、区域树、梯形图、Voronoi图、排列、Delaunay三角剖分、区间树、优先查找树以及线段树等。第11章至第16章结合实际问题,继续讨论了若干几何算法及其数据结构,包括......一起来看看 《计算几何》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试