Python:文件中的空格不被删除

时间:2015-01-14 04:59:08

标签: python newline whitespace

我正在阅读一个包含多个条目的文本文件,每个条目分为两部分:标题和正文。当我在Notepad ++中打开输入文件时,我在每行的末尾看到一个CR和一个LF。当我通过我的脚本运行这个文件时,这些文件不会被Python中的字符串剥离函数删除。

我正在使用的代码如下。在我试图解决这个问题的过程中,除了应用通用的lstrip()和rstrip()之外,我已经将连接线首先转换为unicode,已经剥离了'\ n'... ,完成矫枉过正,但线路结尾仍未修改。如果我打印到outfile,并在Notepad ++中打开,我仍然会在每行的末尾看到一个CR和LF。

    with open (f, 'r') as data:  
           for line in data:
                 if 'WORD' in line:
                     f_out.write('\n' + line) ##by adding the return it now prints as needed.
                 else:
                     line = line.strip()
                     f_out.write(line)

根据请求,输入基本上如下所示:

entry title1 path=[742:0-740] CR LF
LINE1 CR LF
LINE2 CR LF
entry title2 path=[742:0-740] CR LF
LINE1 CR LF
LINE2 CR LF
entry title3 path=[742:0-740] CR LF
LINE1 CR LF
LINE2 CR LF

2 个答案:

答案 0 :(得分:1)

首先,请注意next(仅命名内置函数,而不是调用它)是无操作。也许你的意思是continue?无论如何,这里无害。

接下来,你的line =右手边以怪诞的方式美丽。刚

line = line.strip()

将具有同等性,更具可读性。

最后,print默认情况下会添加一个行尾。最好的是

from __future__ import print_function

(make print作为一个函数工作,就像它应该有的一样,现在在Python 3中工作 - 你也可以在Python 2.7中使用“从未来导入它”,如上所述! - ),然后

print('>>>', line, end='')

end=''部分确保print之后不添加任何行结尾(您可以使用老式的“打印作为声明”,但功能类型的效果更好)。

答案 1 :(得分:0)

我从你的解释得到的,你想从每一行删除CR LF

with open('file') as f, open('outfile', 'w') as f2:
     for x in f:
         x = x.strip()
         f2.write(x + '\n')