如何从字符串中删除前导和尾随空格?

150

我在尝试使用.strip处理以下代码时遇到了困难:

f.write(re.split("Tech ID:|Name:|Account #:",line)[-1])

3
什么是线?能否举个例子来说明一下?否则我们只能胡乱猜测。 - jamylak
1
从您刚刚发布的代码来看,似乎您忘记在strip后面加上括号了。 - jamylak
如果你需要对 re.split() 的结果(即多个字符串)执行 .strip() 操作,那么你需要单独地对每个子字符串执行 strip() 操作。 - pepr
如果你想去除所有的空格,你可以直接调用 x.replace(' ','') - jamylak
1
为什么不在你的正则表达式中添加空格:re.split(r"\s*(?:Tech ID:|Name:|Account #:)\s* 等等。 - georg
显示剩余5条评论
4个回答

294
你可以使用 strip() 方法来移除字符串的末尾和开头的空格:
>>> s = '   abd cde   '
>>> s.strip()
'abd cde'

注意:内部空格会被保留。


35
如果你的目的是将s去除空格后再赋值给它自己,别忘了把s.strip()的输出结果赋值回s: s=s.strip() - Seanonymous
1
@GregSchmit 怎么可能会有人忽略了那个?78个赞,却没有一个人注意到?奇怪。 - Mohammad Yusuf
2
@GregSchmit 看来有89294只眼睛扫过它了。你有一双锐利的眼睛 :P - Mohammad Yusuf
@user1928764 首先它是一个字符串吗? - wizzwizz4
1
@user1928764 可能使用的是 split 而不是 strip。 - James B
显示剩余2条评论

5

将您的一行代码扩展为多行代码,这样会更容易:

f.write(re.split("Tech ID:|Name:|Account #:",line)[-1])

parts = re.split("Tech ID:|Name:|Account #:",line)
wanted_part = parts[-1]
wanted_part_stripped = wanted_part.strip()
f.write(wanted_part_stripped)

4
需要注意的是,strip() 方法会从字符串中删除任何前导和尾随空格字符(如果没有传入参数)。 如果你想要去掉空格字符,同时保留其他字符(如换行符),可以参考这个答案:
sample = '  some string\n'
sample_modified = sample.strip(' ')

print(sample_modified)  # will print 'some string\n'

strip([chars]): 你可以传入可选的字符到strip([chars])方法中。Python会查找这些字符的出现并相应地修剪给定的字符串。


1

开始文件:

     line 1
   line 2
line 3  
      line 4 

代码:

with open("filename.txt", "r") as f:
    lines = f.readlines()
    for line in lines:
        stripped = line.strip()
        print(stripped)

输出:

line 1
line 2
line 3
line 4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接