其他分享
首页 > 其他分享> > 2.11删除字符串中不需要的字符

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操作。

标签:字符,lstrip,print,strip,字符串,world,line,hello,2.11
来源: https://www.cnblogs.com/ye-peng/p/15945322.html