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

时间:2017-07-28 23:04:07

标签: python

我有两个文本文件A和B,分别有16和14列。

这些文件中的列用空格分隔。

对于文件A第9列中的每个条目,我想检查该条目是否在文件B的第8列。

如果是,我想将此值添加到新文件(文件C)。但是,我希望文件C保留与文件A相同的格式。

换句话说,这个新文件也应包含17列。

我一直无法弄清楚如何解决这个问题,因此无法包含我的进度。任何帮助表示赞赏。

提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以将这两个文件读入列表,在列表中提取B的第8列,然后迭代文件A并检查其第9个元素是否与B列8的列表匹配。

如果有匹配,那么我在A的每一行末尾附加匹配,只是打印A行。

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") 部分。

代码

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

示例数据:

aa.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

bb.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

cc.txt

{{1}}

答案 1 :(得分:0)

如果你逐行阅读文件,那么你可以提取你想要的相关信息。

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)

答案 2 :(得分:0)

awk怎么样(因为你有bash标签)?:

awk 'FNR==NR {b[$8]=$0;next} b[$9] {print $0,$9 }' b a > c