两个文本文件中的Python模糊匹配

两个文本文件中的Python模糊匹配,python,fuzzy-search,Python,Fuzzy Search,我有一个简单的代码,可以匹配两个文本文件中的网络用户名。我试图通过将两个输入都改为大写来规范化输入,但我需要进一步,让代码生成部分用户名匹配。我可能有史密斯,约翰在一个名单,也许,史密斯,约翰(金融)在另一个名单。我已经看过fuzzyfuzzy,但我只学习了几周Python,我很难理解如何在脚本中使用它 with OpenUpperCase(filename, "r")as file1: for line in islice(file1,20,None): with Op

我有一个简单的代码,可以匹配两个文本文件中的网络用户名。我试图通过将两个输入都改为大写来规范化输入,但我需要进一步,让代码生成部分用户名匹配。我可能有史密斯,约翰在一个名单,也许,史密斯,约翰(金融)在另一个名单。我已经看过fuzzyfuzzy,但我只学习了几周Python,我很难理解如何在脚本中使用它

with OpenUpperCase(filename, "r")as file1:
    for line in islice(file1,20,None):
        with OpenUpperCase ("c:\\Files\Usernames.txt", "r") as file2:
            files= filename.upper().split("\\")
            int1=files[3].strip()
            filedate=int1[0:-4]
            list2 = file2.readlines()
            for i in file1:
                for j in list2:
                    if i == j:
这就是我到目前为止所做的,可能不是很好的编码,但它似乎很有效。关于如何获得我的用户名的模糊匹配,有什么想法吗? 非常感谢您能提供的任何帮助

编辑。

通常,我的列表如下所示。显然有数百名用户

文件1

文件2


为了简单起见,使用
stringIO
对象:

file1 = io.StringIO("""Salt, William (old user)
Wilds, Tony
Smith, William (Old User)
JONES,Steven (Old User)""")

file2 = io.StringIO("""Salt, Bill
Wilds, Tony (SALES)
Smith,Will (OLD USER)
JONES,STEVEN (ACCOUNTS)""")
将所有名称读入一个集合:

def read_file(fobj):
    names = set()
    for line in fobj:
        split_line = line.lower().split(',')
        names.add((split_line[0], split_line[1].split()[0]))
    return names
对于每个文件:

data1 = read_file(file1)
data2 = read_file(file2)
一个简单的交叉路口可以:

data1.intersection(data2)
结果:

set([('wilds', 'tony'), ('jones', 'steven')])

为了简单起见,使用
stringIO
对象:

file1 = io.StringIO("""Salt, William (old user)
Wilds, Tony
Smith, William (Old User)
JONES,Steven (Old User)""")

file2 = io.StringIO("""Salt, Bill
Wilds, Tony (SALES)
Smith,Will (OLD USER)
JONES,STEVEN (ACCOUNTS)""")
将所有名称读入一个集合:

def read_file(fobj):
    names = set()
    for line in fobj:
        split_line = line.lower().split(',')
        names.add((split_line[0], split_line[1].split()[0]))
    return names
对于每个文件:

data1 = read_file(file1)
data2 = read_file(file2)
一个简单的交叉路口可以:

data1.intersection(data2)
结果:

set([('wilds', 'tony'), ('jones', 'steven')])

你能给我一个列表的样本吗?@zhangyangyu lists attached给你一个想法。感谢@Mike Müller将列表编辑成更可读的格式。你能给我一个列表的样本吗?@zhangyangyu lists attached给你一个想法。感谢@Mike Müller将列表编辑成更可读的格式。这是很大的帮助。谢谢@Mike Müllerth这帮了大忙。谢谢@Mike Müller