我得到了一段简单的代码,可以匹配在两个文本文件中找到的网络用户名。我已经尝试通过将两个输入都更改为大写来规范化输入,但是我需要更进一步,让我的代码生成用户名的部分匹配。我可能在一个名单上有史密斯,约翰,也许在另一个名单上有史密斯,约翰(金融)。我看过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')])