Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较2个文本文件并导出匹配的Python_Python - Fatal编程技术网

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

比较2个文本文件并导出匹配的Python,python,Python,我目前有1个文本文件选项卡,包含15000条记录。 我有另一个文本文件标签,上面有5000条记录 在包含5000条记录的文件中,有一些行与包含15000条记录的文件匹配。它们可以通过名为URN unique record number的列标题进行识别。例如,我可能需要从主文件中取出URN 62294,但我不知道我必须取出该文件,直到我比较这两个文件并确定它都在这两个文件中 在python中实现这一点有多困难?您可以查看库。它将允许您将两个表作为数据帧加载,并以类似sql的样式将它们连接到所需的列

我目前有1个文本文件选项卡,包含15000条记录。 我有另一个文本文件标签,上面有5000条记录

在包含5000条记录的文件中,有一些行与包含15000条记录的文件匹配。它们可以通过名为URN unique record number的列标题进行识别。例如,我可能需要从主文件中取出URN 62294,但我不知道我必须取出该文件,直到我比较这两个文件并确定它都在这两个文件中


在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行。