2.11删除字符串中不需要的字符

问题

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

解决方案

lstrip()方法能用于删除开始或者结尾的字符。lstrip()rstrip()分别从左或者右执行删除操作。默认情况下,这些方法会去掉空白字符,但是你也可以指定其他字符。

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

print(s.lstrip()) # -> hello world \n
print(s.strip())  #->hello world

t='-----hello====='
print(t.lstrip('-'))  #->hello=====
print(t.rstrip('='))  # ->-----hello
print(t.strip('-='))  # ->hello

讨论

​ 这些lstrip()方法在读取和清理数据以备后续处理的时候是经常会被用到的,比如,你可以用它们来去掉空格,引号和完成其他任务。

​ 但是要注意的是去掉操作不会对字符串的中间的文本产生任何影响。比如:

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

​ 如果你想处理中间的空格,那么你需要求助于其他技术,比如使用replace()方法或者用正则表达式替换。示例如下:

s=' hello   world   \n'
print(s.replace(' ',''))  # ->helloworld
import re
print(re.sub('\s+',' ',s))  # -> hello world 

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

with open(r'2-3用Shell通配符匹配字符串.py')  as f:
    lines = (line.strip() for line in f)
    print(lines)  # -》<generator object <genexpr> at 0x0000021933F5CB30>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值