博客
关于我
如何去掉字符串开头,结尾或者中间的空格及其他不想要的字符
阅读量:363 次
发布时间:2019-03-04

本文共 1300 字,大约阅读时间需要 4 分钟。

本文  已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star。

去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。

解决方案

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'>>>

通常情况下你想将字符串 strip 操作和其他迭代操作相结合,比如从文件中读取多行数据。 如果是这样的话,那么生成器表达式就可以大显身手了。比如:

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

在这里,表达式 lines = (line.strip() for line in f) 执行数据转换操作。 这种方式非常高效,因为它不需要预先读取所有数据放到一个临时的列表中去。 它仅仅只是创建一个生成器,并且每次返回行之前会先执行strip操作。

对于更高阶的strip,你可能需要使用 translate() 方法。请参阅下一节了解更多关于字符串清理的内容。

 

-- END --

日常求赞:你好技术人,先赞后看养成习惯,你的赞是我前进道路上的动力,对我非常重要。

加油技术人!

简介: 博主从华中科技大学硕士毕业,是一个对技术有追求,对生活有激情的程序员。几年间浪迹于多个一线互联网大厂,具有多年开发实战经验。

微信搜索公众号【爱笑的架构师】,我有技术和故事,等你来。

文章持续更新,在  中可以看到我归档的系列文章,有面试经验和技术干货,欢迎Star。

转载地址:http://imbr.baihongyu.com/

你可能感兴趣的文章
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
netcat的端口转发功能的实现
查看>>
netfilter应用场景
查看>>
netlink2.6.32内核实现源码
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
Netty事件注册机制深入解析
查看>>
Netty原理分析及实战(四)-客户端与服务端双向通信
查看>>
Netty客户端断线重连实现及问题思考
查看>>
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0007---NIO的三大核心组件关系
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0013---Channel应用案例4Copy图片
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>