我有两个文本文件A和B,分别有16和14列。
这些文件中的列用空格分隔。
对于文件A第9列中的每个条目,我想检查该条目是否在文件B的第8列。
如果是,我想将此值添加到新文件(文件C)。但是,我希望文件C保留与文件A相同的格式。
换句话说,这个新文件也应包含17列。
我一直无法弄清楚如何解决这个问题,因此无法包含我的进度。任何帮助表示赞赏。
提前谢谢。
答案 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