我想查找与给定单词匹配的排列,并根据列位置排列我的数据。
IE - 我创建了一个CSV,其中包含我从几个网站上删除的数据。它看起来像这样:
Name1 OtherVars Name2 More Vars
Stanford 23451 Mamford No
MIT yes stanfor1d 12
BeachBoys pie Beatles Sweeden
我想(1)从Name2中的Name1中找到每个单词的排列,然后(2)用Name1中的那个单词打印一个表格+在OtherVars中匹配单词+在Name2中单词的排列+它在MoreVars中的匹配。 (如果找不到匹配项,只需删除该单词)。
结果将是这种情况:
Name1 OtherVars Name2 More Vars
Stanford 23451 stanford 12
那么,我该怎么做:
在其他列中查找单词的匹配排列?
在其他列中打印2个单词及其映射的值?
PS2 - 我被建议使用Fuzzymatch
但是,我怀疑在这种情况下这是一种过度杀伤。
答案 0 :(得分:0)
如果您正在寻找一个为“Stanford”和“stanf1ord”返回相同输出的函数,您可以:
import re
def signature(word):
return sorted(re.findall('[a-z]', word.lower()))
print(signature("Stanford"))
# ['a', 'd', 'f', 'n', 'o', 'r', 's', 't']
print(signature("Stanford") == signature("stanfo1rd"))
# True
您可以从第1列创建签名集或字典,并查看第2列中是否有任何匹配。
答案 1 :(得分:0)
你似乎想要模糊匹配,而不是“排列”。有一些python模糊匹配库,但我认为人们喜欢fuzzywuzzy
或者,您可以自己动手。像
这样的东西def ismatch(s1,s2):
# implement logic
# return boolean if match
pass
def group():
pairs = [(n1, v1, n2, v2) for n1 in names1 for n2 in names2 if ismatch(n1,n2)]
return pairs