gpt4 book ai didi

python - 在Python中将2个文本文件合并为一个具有2列的文本文件

转载 作者:行者123 更新时间:2023-12-01 08:33:18 25 4
gpt4 key购买 nike

我有 2 个文本文件,每个文件都有相同的行数,我想将这 2 个文本文件合并到一个 csv 文件中,分成 2 个字段,并带有一个附加行号字段。这在 python 中可能吗?

File1:
This is a source first line
This is a source second line
This is a source third line

File2:
This is a transformed line 1
This is a transformed line 2
This is a transformed line 3

Outputfile:
1,This is a source first line ,This is a transformed line 1
2,This is a source second line ,This is a transformed line 2
3,This is a source third line ,This is a transformed line 3

最佳答案

给定:

$ cat file1
This is a source first line
This is a source second line
This is a source third line
$ cat file2
This is a transformed line 1
This is a transformed line 2
This is a transformed line 3

你可以这样做:

from itertools import izip_longest

with open(fn1) as f1, open(fn2) as f2:
print '\n'.join(['{}: {}\t{}'.format(i,l1.strip(),l2.strip()) for i,(l1,l2) in enumerate(izip_longest(f1,f2),1)])

打印:

1: This is a source first line  This is a transformed line 1
2: This is a source second line This is a transformed line 2
3: This is a source third line This is a transformed line 3

现在假设您有:

$ cat file1
This is a source first line
This is a source second line
This is a source third line
$ cat file2
This is a transformed line 1
This is a transformed line 2
This is a transformed line 3
This is line 4

您需要使输出为真列(通过使用 {:40} 设置 40 个字符的列值),并使用 fillvalue 作为 izip_longest:

with open(fn1) as f1, open(fn2) as f2:
print '\n'.join(['{}: {:40}{:40}'.format(i,l1.strip(),l2.strip()) for i,(l1,l2) in enumerate(izip_longest(f1,f2,fillvalue=""),1)])

打印:

1: This is a source first line             This is a transformed line 1            
2: This is a source second line This is a transformed line 2
3: This is a source third line This is a transformed line 3
4: This is line 4

关于python - 在Python中将2个文本文件合并为一个具有2列的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53839891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com