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()方法。请参见下一节以获得进一步的细节。


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

查看所有标签

猜你喜欢:

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

轻量级Django

轻量级Django

茱莉亚·埃尔曼 (Julia Elman)、马克·拉温 (Mark Lavin) / 侯荣涛、吴磊 / 中国电力出版社; 第1版 / 2016-11-1 / 35.6

自Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构? 本书讲述如何利用Django 强大的“自支持”功......一起来看看 《轻量级Django》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

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

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具