Python-将2个文件中的行与\n
我是Python新手。我有两个文件,其中包含我需要将两个文件逐行合并成一个文件的句子Python-将2个文件中的行与\n,python,python-3.x,Python,Python 3.x,我是Python新手。我有两个文件,其中包含我需要将两个文件逐行合并成一个文件的句子 file_1.txt: feel my cold hands. I love oranges. Mexico has a large surplus of oil. Ink stains don't rub out. file_2.txt: ≥ª ¬˘ º’¿ª ¡ª ∏∏¡Æ∫¡. ∏«¸ ∫Ò«‡±‚∞° ∞≠¿ª ≥Øæ∆∞¨¥Ÿ. ∏flΩ√ƒ⁄ø°¥¬ ¥Ÿ∑Æ¿« ø©∫–¿« ºÆ¿Ø∞°
file_1.txt:
feel my cold hands.
I love oranges.
Mexico has a large surplus of oil.
Ink stains don't rub out.
file_2.txt:
≥ª ¬˘ º’¿ª ¡ª ∏∏¡Æ∫¡.
∏«¸ ∫Ò«‡±‚∞° ∞≠¿ª ≥Øæ∆∞¨¥Ÿ.
∏flΩ√ƒ⁄ø°¥¬ ¥Ÿ∑Æ¿« ø©∫–¿« ºÆ¿Ø∞° ¿÷¥Ÿ.
¿◊≈© ¿⁄±π¿∫ ¥€æ∆µµ ¡ˆøˆ¡ˆ¡ˆ æ ¥¬¥Ÿ.
FINAL OUTPUT should look like:
feel my cold hands.
≥ª ¬˘ º’¿ª ¡ª ∏∏¡Æ∫¡.
I love oranges.
∏«¸ ∫Ò«‡±‚∞° ∞≠¿ª ≥Øæ∆∞¨¥Ÿ.
Mexico has a large surplus of oil.
∏flΩ√ƒ⁄ø°¥¬ ¥Ÿ∑Æ¿« ø©∫–¿« ºÆ¿Ø∞° ¿÷¥Ÿ.
Ink stains don't rub out.
¿◊≈© ¿⁄±π¿∫ ¥€æ∆µµ ¡ˆøˆ¡ˆ¡ˆ æ ¥¬¥Ÿ.
这是我试过的
filenames = ['data/data.txt', 'data/data2.txt']
with open('data/test.txt', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
for line in infile:
outfile.write(line)
这里的代码只是一个接一个地连接文件。但是,它不是逐行切割并创建\n。
谢谢
参考资料:
所以技巧是我们想要同时迭代两个文件。为此,我们可以使用
zip
函数,如下所示:
filenames = ['data/data.txt', 'data/data2.txt']
with open('data/test.txt', 'w') as outfile:
with open(filenames[0]) as f1, open(filenames[1]) as f2:
for f1_line, f2_line in zip(f1, f2):
outfile.write(f1_line)
outfile.write(f2_line)
outfile.write("\n") # add blank line between each pair
所以关键是我们要同时迭代两个文件。为此,我们可以使用
zip
函数,如下所示:
filenames = ['data/data.txt', 'data/data2.txt']
with open('data/test.txt', 'w') as outfile:
with open(filenames[0]) as f1, open(filenames[1]) as f2:
for f1_line, f2_line in zip(f1, f2):
outfile.write(f1_line)
outfile.write(f2_line)
outfile.write("\n") # add blank line between each pair
您可以使用以下选项:
with open('data/data.txt', 'r') as f1, open('data/data2.txt', 'r') as f2:
for line1, line2 in zip(f1, f2):
# do something
您可以使用以下选项:
with open('data/data.txt', 'r') as f1, open('data/data2.txt', 'r') as f2:
for line1, line2 in zip(f1, f2):
# do something
试试这个:
filenames = ['data/data.txt', 'data/data2.txt']
with open('data/test.txt', 'w') as outfile,ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in filenames]
for lines in zip(*files):
outfile.writelines(lines)
此方法可以接受任意数量的输入文件。尝试以下方法:
filenames = ['data/data.txt', 'data/data2.txt']
with open('data/test.txt', 'w') as outfile,ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in filenames]
for lines in zip(*files):
outfile.writelines(lines)
这种方法可以接受任意数量的输入文件。您可以使用上下文管理器:
import contextlib
@contextlib.contextmanager
def aline(outfile, *files):
final_data = zip(open(files[0]), open(files[1]))
yield ['\n'.join([a, b]) for a, b in final_data]
f = open(outfile, 'w')
for a, b in final_data:
f.write('\n'.join([a, b])+'\n\n')
f.close()
with aline('output.txt', *['data/data.txt', 'data/data2.txt']) as f:
print(f)
输出(intOutput.txt
):
您可以使用上下文管理器:
import contextlib
@contextlib.contextmanager
def aline(outfile, *files):
final_data = zip(open(files[0]), open(files[1]))
yield ['\n'.join([a, b]) for a, b in final_data]
f = open(outfile, 'w')
for a, b in final_data:
f.write('\n'.join([a, b])+'\n\n')
f.close()
with aline('output.txt', *['data/data.txt', 'data/data2.txt']) as f:
print(f)
输出(intOutput.txt
):
输入文件的数量是否更改?输入文件的数量是否更改?使用
outfile.write('\n')
结尾以100%回答OP的问题。使用outfile.write('\n')
结尾以100%回答OP的问题。