内容简介:上一篇文章:下一篇文章:我们想在字符串的开始、结尾或中间去掉不需要的字符,比如说空格符。
上一篇文章: 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()方法。请参见下一节以获得进一步的细节。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python实用技法第33篇:字符串连接及合并
- Nginx 之大并发服务器架构实战技法三
- 京东618:容器技法日趋娴熟,数个项目即将开源回馈社区
- 字符串、字符处理总结
- XML 非法字符(转义字符)
- 查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。