我有一个这种格式的文件:
611 2856 618 2582 94075 94107 94065 94068
101071 94104
598 2856 618 611 93995 94107 93992 93991
94075 94065
612 2834 2821 2812 94087 101577 94085 94081
101558 101557
我需要阅读这些行并重写它们:
611 2856 618 2582 94075 94107 94065 94068 101071 94104
598 2856 618 611 93995 94107 93992 93991 94075 94065
612 2834 2821 2812 94087 101577 94085 94081 101558 101557
我试过这样的:
f2 = open('new_file.txt', 'w')
f1 = open('old_file.txt')
lines = f1.readlines()
for i, line in enumerate(lines):
print(repr(line))
f2.write(line)
i = i+1
f1.close()
f2.close()
但是它不工作,因为它每行都重新写入。我需要阅读两行并将它们写在一行中。 有什么建议吗?
最佳答案
您不需要将行读入列表,也不需要弄乱行号,您可以直接遍历文件行:
with open('oldfile.txt') as fin, open('newfile.txt', 'w') as fout:
for line in fin:
fout.write(line[:-1] + ' ' + next(fin))
newfile.txt 的内容
611 2856 618 2582 94075 94107 94065 94068 101071 94104
598 2856 618 611 93995 94107 93992 93991 94075 94065
612 2834 2821 2812 94087 101577 94085 94081 101558 101557
line[:-1] + ' '
删除长行末尾的换行符,并用一个空格代替;我很确定这比 line.replace('\n', ' ')
快,但我还没有计时。
与 Graipher 的解决方案一样,如果文件不有偶数行,则不会复制最后一行,但我认为这对您的数据来说不是问题。 p>
关于python - 读取两行的值并用python写入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41828949/