我分別具有兩個文本文件A和B,用16和14列。循環通過特定列在兩個獨立的文本文件
這些文件中的列之間用空格分隔。
對於文件中的第9欄的每個條目,我要檢查,如果該條目是在文件B的8列
如果是這樣,我想將此值添加到一個新文件(文件C)。不過,我想文件C保留相同的格式文件A.
換句話說,這個新的文件應該包含17列,以及。
我一直無法弄清楚如何處理這個問題,並不能包括我作爲一個結果的進展。任何幫助表示讚賞。
預先感謝您。
我分別具有兩個文本文件A和B,用16和14列。循環通過特定列在兩個獨立的文本文件
這些文件中的列之間用空格分隔。
對於文件中的第9欄的每個條目,我要檢查,如果該條目是在文件B的8列
如果是這樣,我想將此值添加到一個新文件(文件C)。不過,我想文件C保留相同的格式文件A.
換句話說,這個新的文件應該包含17列,以及。
我一直無法弄清楚如何處理這個問題,並不能包括我作爲一個結果的進展。任何幫助表示讚賞。
預先感謝您。
你可以閱讀這兩個文件到列表,列表中的提取物B的第8列,然後遍歷文件中的,檢查其第九元素與列8 B.
名單如果匹配有一個匹配,那麼我是一家人剛剛打印線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
cc.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
你能後的兩個文件的樣本?他們有多大? – choroba
soooooo,python matlab或bash? – jacoblaw
請提供您嘗試過的代碼示例。 – Fabien