我有两个带有很多列的文件,这些文件包含有关对象ID的一堆对象的不同信息。我需要找到两个文件之间的匹配项,但是对象ID有两种不同的格式:
一个文件中的12-12-1将在另一个文件中写入0012 00012 1。例如,在一个文件中,我有:
0001 01531 1
0001 01535 1
0001 01538 1
与此相对应的是:
1-1531-1
1-1535-1
1-1538-1
像这样简单
matches = open('matches.dat','w')
for j in range(len(file1)):
for i in range(len(file2)):
if file1[j] == file2[i]:
matches.write('{}/n'.format(file1[j]))
似乎并不能解决问题。
这里的file1和file2是包含来自不同文件的所有对象ID的列表。
我要添加什么代码才能找到匹配项?
最佳答案
将您的第一种格式转换为第二种格式:
import re
def convert(word):
word = word.strip().replace(' ', '-')
return re.sub('\\b0+', '', word) # strip all 0s after a word boundary (space or beginning of line)
算法改进
您可以通过将O(n + m)时间转换为列表并计算交点来计算O(n + m)时间的交点
file1_ids = {convert(line) for line in file1}
file2_ids = {line for line in file2}
matches = file1_ids.intersection(file2_ids)
关于python - 在python 3中查找匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47290027/