删除 Python 中的所有空字符

Removing all of empty characters in Python

我想用单个空字符替换所有空字符。我试过这个:

import re

fin = open("toutput_des.txt", "r")
fout = open("toutput2_des.txt", "w")

for line in fin:
    fout.write(re.sub('\s+',' ',line))
    
fin.close()
fout.close()

它起作用了,但它还在每行末尾用一个空字符替换了“换行”字符。如果我想排除“新行”,我该如何修改正则表达式? 我也试过 '\s+\b' 但它删除了文件的所有内容。

您可以在替换后简单地追加换行符。

不过,这里不需要正则表达式,可以使用

for line in fin:
    fout.write(' '.join(line.split()) + '\n')

请注意,line.split() 将字符串与任何白色 space 分开,同时删除前导和尾随白色 space,并且 ' '.join(...) 使用单个 space.

如果您需要使用正则表达式解决方案,那么您可以从 \s 中减去 \n:

re.sub(r'[^\S\n]+', ' ', line)

[^\S\n]+ 正则表达式匹配除 non-whitespace 和换行字符以外的任何一个或多个字符,即它匹配任何白色 space 字符但换行字符。 您可能还想 .lstrip() 结果。