>我有两个文本文件 A 和 B,分别有 16 列和 14 列。
这些文件中的列用空格分隔。
对于文件 A 第 9 列中的每个条目,我想检查该条目是否在文件 B 的第 8 列中。
如果是,我想将此值添加到新文件(文件 C(中。但是,我希望文件 C 保留与文件 A 相同的格式。
换句话说,这个新文件也应该包含 17 列。
我一直无法弄清楚如何处理这个问题,因此无法包括我的进步。任何帮助,不胜感激。
提前谢谢你。
您可以将两个文件读入一个列表,提取列表中 B 的第 8 列,然后迭代文件 A 并检查其第 9 个元素是否与 B 的第 8 列列表匹配。
如果有匹配项,那么我将匹配项附加到 A 的每一行末尾,否则只需打印行 A。
NOTE:
如果在不匹配时不需要该行,则可以删除else
部分。
法典
alines = [line.rstrip('n') for line in open('aa.txt')]
blines = [line.rstrip('n') for line in open('bb.txt')]
column8b=[]
for line in blines:
column8b.append(line.split(" ")[7])
with open('cc.txt', "w") as oFile:
for line in alines:
element = line.split(" ")[8]
if element in column8b:
oFile.write(line + " " + element + "n")
## Delete this if you do not want to write A into C
## when there is no match between A[9] and B[8]
else:
oFile.write(line + "n")
示例数据:
AA.txt
1 2 3 4 5 6 7 8 16 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 26 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 36 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 46 10 11 12 13 14 15 16
BB.txt
1 2 3 4 5 6 7 16 9 10 11 12 13 14
1 2 3 4 5 6 7 36 9 10 11 12 13 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14
抄送.txt
1 2 3 4 5 6 7 8 16 10 11 12 13 14 15 16 16
1 2 3 4 5 6 7 8 26 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 36 10 11 12 13 14 15 16 36
1 2 3 4 5 6 7 8 46 10 11 12 13 14 15 16
如果你逐行阅读文件,那么你可以提取你想要的相关信息。
your_file_A = open("FILEPATH.EXTENSION")
your_file_B = open("FILEPATH.EXTENSION")
your_file_C = open("FILEPATH.EXTENSION", 'w')
col8_of_B=[]
for line in your_file_B:
col8_of_B.append(line[7]) #line[7] is position 8
for line in your_file_A:
if line[8] in col8_of_B:
your_file_C.write(line)
awk
呢(因为你有bash
标签(?
awk 'FNR==NR {b[$8]=$0;next} b[$9] {print $0,$9 }' b a > c