复制、合并 CSV 中的某些列并输出到新文件
Copy, combine certain columns in CSVs and output to a new file
我有 csv 文件 a.txt
和 b.txt
(没有 header,制表符分隔),每个文件都有 6 列和大约 200,000 行,并且每个文件中的行号始终相同,我要做的是:
将 a.txt
> 输出的所有前 4 列复制到新文件 c.txt
Get 5 col in a.txt
+ 5 col in b.txt
> output到 5 列 c.txt
Get 6 col in a.txt
+ 6 col in b.txt
> output到 6 列 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
样本
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 解决方案,
- 打开我们需要的所有文件,
- 永远循环,从
a
读取一行,测试 EOF 并可能中断
- 也从
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 个值
我有 csv 文件 a.txt
和 b.txt
(没有 header,制表符分隔),每个文件都有 6 列和大约 200,000 行,并且每个文件中的行号始终相同,我要做的是:
将
a.txt
> 输出的所有前 4 列复制到新文件c.txt
Get 5 col in
a.txt
+ 5 col inb.txt
> output到 5 列c.txt
Get 6 col in
a.txt
+ 6 col inb.txt
> output到 6 列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
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 解决方案,
- 打开我们需要的所有文件,
- 永远循环,从
a
读取一行,测试 EOF 并可能中断 - 也从
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 个值