循环遍历两个单独文本文件中的特定列



>我有两个文本文件 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

最新更新