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

时间:2015-01-30 14:43:22

标签: python python-2.7 csv

我有csv文件a.txtb.txt(没有标题,标签分隔),每个文件有6列和大约200,000行,每个文件中的行号总是相同的,我要做的就是是:

  • a.txt > 输出中的所有前4个cols复制到新文件c.txt

  • a.txt + 5 col {5} {<1}} &gt; 输出到5 col b.txt < / p>

  • 获取c.txt + 6 col a.txt &gt; 输出到6 col b.txt < / p>

c.txt

的示例
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

感谢。

2 个答案:

答案 0 :(得分:0)

KISS解决方案,

  1. 打开我们需要的所有文件,
  2. 永远循环,从a读取一行,测试EOF并可能突破
  3. 同时阅读b,拆分行,更新la中的最后两项,输出已连接的元素并编写换行符
  4. 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')
    

答案 1 :(得分:0)

你可以做这样的事情

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个值