比较2个文本文件并导出匹配的Python
我目前有1个文本文件选项卡,包含15000条记录。 我有另一个文本文件标签,上面有5000条记录 在包含5000条记录的文件中,有一些行与包含15000条记录的文件匹配。它们可以通过名为URN unique record number的列标题进行识别。例如,我可能需要从主文件中取出URN 62294,但我不知道我必须取出该文件,直到我比较这两个文件并确定它都在这两个文件中比较2个文本文件并导出匹配的Python,python,Python,我目前有1个文本文件选项卡,包含15000条记录。 我有另一个文本文件标签,上面有5000条记录 在包含5000条记录的文件中,有一些行与包含15000条记录的文件匹配。它们可以通过名为URN unique record number的列标题进行识别。例如,我可能需要从主文件中取出URN 62294,但我不知道我必须取出该文件,直到我比较这两个文件并确定它都在这两个文件中 在python中实现这一点有多困难?您可以查看库。它将允许您将两个表作为数据帧加载,并以类似sql的样式将它们连接到所需的列
在python中实现这一点有多困难?您可以查看库。它将允许您将两个表作为数据帧加载,并以类似sql的样式将它们连接到所需的列上。使用文档应该很容易。尝试使用pip安装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)
难吗?不,你可以很容易地用它
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秒处理你的文件。问题是我不知道我在找什么。但是如果URN在这两个文件中,那么我需要将它输出到一个新的文本文件中。我已经更新了代码,以便在这两个文件中输出带有URN值的行。how='internal'是内部连接选项。该选项输出一个.xlsx文件,其中除了头以外什么都没有in@mbf94,尝试将列URN设置为int类型,然后合并。更新了上面的代码。Wait OP共享了文件?没有,但是我生成了两个文件,分别有10列和15000行和5000行。