使用Python将多个文本文件中的选定列合并到一个文本文件中

时间:2015-04-13 15:57:15

标签: python merge

我有多个文本文件有4列(制表符分隔)。每个文件大约有2000行。使用Python,我如何创建一个看起来像这样的新文件?

file1column1 file1column4 file2column4 file3column4 ...fileNcolumn4

感谢。

这是我试过的代码:

file_lists = ['file1.data', 'file2.data']

temp_data = []

for a_file in file_lists:
   file_h = open(a_file)
   a_list = []
   csv_reader = csv.reader(file_h, delimiter='\t')
   for row in csv_reader:
       if afile == "file1.data":
            a_list.extend([row[0], row[3]]) 
       else:
            a_list.append(row[3])
    temp_data.append((n for n in a_list))
    file_h.close()

with open('output.data', 'w') as output_file:
   csv_writer = csv.writer(output_file, delimiter='\t')
   for row in list(zip(*temp_data)):
       csv_writer.writerow(row)
output_file.close()

礼貌:Combining columns of multiple files in one file - Python

我的结果如下:

file1column1 file2column4
file1column4 file2column4
file1column1 file2column4
file1column4 file2column4

1 个答案:

答案 0 :(得分:0)

怎么样:

file_lists = [('file1.data', 1), ('file1.data', 3), ('file2.data',3)]

temp_data = []

for a_file in file_lists:
    file_h = open(a_file[0])
    a_list = []
    csv_reader = csv.reader(file_h, delimiter='\t')
    for row in csv_reader:
       a_list.append(row[a_file[1]])           
    temp_data.append((n for n in a_list))
    file_h.close()

with open('output.data', 'w') as output_file:
    csv_writer = csv.writer(output_file, delimiter='\t')
    for row in list(zip(*temp_data)):
        csv_writer.writerow(row)

当您使用...作为

时,您不需要关闭文件