删除前导和尾随空格?


109

我很难尝试将.strip与以下代码行结合使用。

谢谢您的帮助。

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

3
什么是线?一个例子很好,或者我们只是猜测。
jamylak'5

f.write(str(re.split(“技术ID:|名称:|帐户编号:”,行)[-1])。strip)
fpena06 2012年

1
从您刚刚发布的代码来看,您似乎忘记了脱衣舞后的
偏瘫

您错过了之后的函数调用括号strip。您要:f.write(str(re.split("Tech ID:|Name:|Account #:",line)[-1]).strip())
叶立昂

1
您为什么不只在正则表达式中添加空格:re.split(r"\s*(?:Tech ID:|Name:|Account #:)\s*等等
乔治

Answers:


235

您可以使用strip()删除尾随和前导空格。

>>> s = '   abd cde   '
>>> s.strip()
'abd cde'

注意:内部空间被保留


31
如果这是您的目标,请不要忘记将s.strip()的输出分配回s:s = s.strip()
Seanonymous 2015年

@GregSchmit谁能错过?78个赞,没有人注意到?奇怪。
MYGz

@MYGz是的,我什至在问自己,以为我可能错过了一些东西。
格雷格·施密特

2
@GregSchmit显然是89294眼睛对其进行了扫描。您得到了一对锋利的双鞋:P
MYGz

显然,我做错了事,但我不知道那是什么。当我在字符串上运行strip()时,我得到的是字符串列表,而不是字符串。
user1928764

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)

3

应该注意的是,该strip()方法将修剪字符串中的任何前导和尾随空白字符(如果没有传入的参数)。如果要修剪空格字符,同时保留其他字符(例如换行符),此答案可能会有所帮助:

sample = '  some string\n'
sample_modified = sample.strip(' ')

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

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


0

起始文件:

     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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.