比较2个文本文件并导出匹配Python

时间:2017-02-17 08:35:10

标签: python

我目前有1个文本文件(tab del),包含15,000条记录。 我有另一个包含5000条记录的文本文件(tab del)。

在包含5000条记录的文件中,有一些行与包含15,000条记录的文件匹配。这些可由名为URN(唯一记录号)的列标题标识。例如,我可能需要URN 62294从主文件中取出,但我不知道我必须拿出那个,直到我比较两个文件并看到它在两者中。

在python中这有多难?

3 个答案:

答案 0 :(得分:1)

尝试使用pip install pandas

安装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)

答案 1 :(得分:0)

您可以查看Pandas库。它允许您将两个表作为数据帧加载,并以类似sql的方式将它们连接到所需的列。使用文档应该很容易。

答案 2 :(得分:0)

难吗?不,你可以用

轻松完成
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秒。)