复制、合并 CSV 中的某些列并输出到新文件

Copy, combine certain columns in CSVs and output to a new file

我有 csv 文件 a.txtb.txt(没有 header,制表符分隔),每个文件都有 6 列和大约 200,000 行,并且每个文件中的行号始终相同,我要做的是:

a.txt

样本
B sub   19  20  IG_BSU00010     4   1
B sub   22  23  IG_BSU00010     0   0
B sub   35  36  IG_BSU00010     0   0
B sub   55  56  IG_BSU00010     0   0

b.txt

样本
B sub   19  20  IG_BSU00010     0   2
B sub   22  23  IG_BSU00010     0   0
B sub   35  36  IG_BSU00010     0   0
B sub   55  56  IG_BSU00010     1   0

谢谢。

KISS 解决方案,

  1. 打开我们需要的所有文件,
  2. 永远循环,从 a 读取一行,测试 EOF 并可能中断
  3. 也从 b 读取,拆分行,更新 la 中的最后两项,输出连接的元素并写入换行符

.

a = open('a.csv')
b = open('b.csv')
c = open('c.csv','w')

while True:
   la = a.readline()
   if not la: break
   lb = b.readline()
   la = la.split('\t')
   lb = lb.split('\t')
   la[4] = str(int(la[4])+int(lb[4]))
   la[5] = str(int(la[5])+int(lb[5]))
   c.write('\t'.join(la)); c.write('\n')

你可以这样做

target_file = open('a.txt','r')
data_from_a_file = target_file.readlines()

然后你可以用空格分隔每一行

formatted_data = [line.split(' ') for line in data_from_a_file]

formatted_data 中,您将获得列表,其中文件的每一行都将作为单独的列表显示,就像这样 [['sub', '19', '20'], ['other', 'values']] 。 然后您可以像 formatted_data[1][5] 一样轻松访问它 - 这将为您提供第二行的第 6 个值