我有两个带有很多列的文件,这些文件包含有关对象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/

10-09 16:37