我有3个文件 -
文件1:
A
B
C
file2的:
10,20,30,40
40,20,50,60
60,20,80,90
file3的:
20
30
40
如何合并文件以生成以下格式的单个文件:
A 10,20,30,40 20
B 40,20,50,60 30
C 60,20,80,90 40
每个列都以' \ t'分隔,即选项卡而非空格。
我对Python来说真的很陌生而且我不确定如何实现这一点。我在网上看到了各种例子,他们只是简单地连接文件而不保留模式(列)。
如何通过使用单个制表符分隔列来保留模式?
任何相关的代码都会非常有用。感谢。
答案 0 :(得分:5)
假设f1
,f2
和f3
是输入文件的句柄,而output
是输出的句柄,您可以
for items in zip(*(f1, f2, f3)):
output.write("\t".join(item.strip() for item in items) + "\n")
zip()
将所有相应的项目(所有第一行,第二行等)拉到一起,将它们表示为元组。
join()
使用\t
作为分隔符将它们连接成一个字符串。
由于我们已经从文件中读取了这些行,因此它们大多以\n
结尾,因此我们需要在加入字符串之前删除它们。
答案 1 :(得分:2)
虽然在Python中很容易做到这一点,但也有一个标准的unix工具可以做到这一点。只做paste file1 file2 file3 > singlefile
。
Python中的相同工作可能是:
import itertools
def paste(outfile, separator="\t", *infiles):
for line in itertools.izip_longest(*infiles, fillvalue=""):
outfile.write(separator.join(column.rstrip("\n") for column in line)+"\n")
if __name__=="__main__":
import sys
paste(sys.stdout, "\t", *map(open,sys.argv[1:]))