我正在阅读一个包含多个条目的文本文件,每个条目分为两部分:标题和正文。当我在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
答案 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')