我目前有15000條記錄的文本文件(製表符del)。 我有5000個記錄的另一個文本文件(製表符del)。比較2個文本文件並導出匹配Python
在具有5000條記錄的文件中,有一些行與包含15,000條記錄的文件相匹配。這些可通過名爲URN(唯一記錄號)的列標題進行標識。例如我可能需要從主文件中取出URN 62294,但我不知道我必須拿出那一個出來,直到我比較這兩個文件並且看到它在兩者中。
這在python中有多難?
我目前有15000條記錄的文本文件(製表符del)。 我有5000個記錄的另一個文本文件(製表符del)。比較2個文本文件並導出匹配Python
在具有5000條記錄的文件中,有一些行與包含15,000條記錄的文件相匹配。這些可通過名爲URN(唯一記錄號)的列標題進行標識。例如我可能需要從主文件中取出URN 62294,但我不知道我必須拿出那一個出來,直到我比較這兩個文件並且看到它在兩者中。
這在python中有多難?
是不是很難?不,你可以很容易地做到這一點
file1 = open("file1.txt","r")
results = []
for line in file1:
file2 = open("file2.txt","r")
for l in file2:
if (l.split("\t")[0] == line.split("\t")[0]):
results.append(l.split("\t")[0])
break
file2.close()
file1.close()
for i in results:
print(i)
現在,這是最好的方法嗎?可能不適合大文件。 (帶我74秒的文件)。
嘗試安裝熊貓與pip install pandas
然後運行這個命令:
import pandas as pd
filename1 = #main file
filename2 = #the other file
main = pd.read_csv(filename1,sep='\t') # sep='\t' is for tab delimited file
side = pd.read_csv(filename2,sep='\t')
main['URN'] = main['URN'].astype(int)
side['URN'] = side['URN'].astype(int)
merge = pd.merge(main,side,on='URN',how='inner') #how=inner means the URN value is in both 2 files
#merge = merge[merge['URN'] != 62294]
print (merge)
merge.to_excel('Output.xlsx,index=False)
等待OP分享了這些文件? –
不,不,但我生成了10列和15000和5000行分別爲幾個文件。 – Pol