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



我得到了一段简单的代码,可以匹配在两个文本文件中找到的网络用户名。我已经尝试通过将两个输入都更改为大写来规范化输入,但是我需要更进一步,让我的代码生成用户名的部分匹配。我可能在一个名单上有史密斯,约翰,也许在另一个名单上有史密斯,约翰(金融)。我看过FuzzyWuzzy,但我只学了几个星期的Python,我正在努力理解如何在我的脚本中使用它。

with OpenUpperCase(filename, "r")as file1:
    for line in islice(file1,20,None):
        with OpenUpperCase ("c:\FilesUsernames.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:

这是我到目前为止,不是伟大的编码可能,但它似乎工作。任何想法,我如何能得到我的用户名模糊匹配请?非常感谢你能提供的任何帮助。

编辑。

通常,我的列表是这样的。显然有几百个用户。

File1

Salt, William (old user)
Wilds, Tony
Smith, William (Old User)
JONES,Steven (Old User)

File2

Salt, Bill
Wilds, Tony (SALES)
Smith,Will (OLD USER)
JONES,STEVEN (ACCOUNTS)

为了简单使用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')])

最新更新