我正在做一个小项目,需要一些帮助来搜索字符串中的文本。
让我们假设我有一个主要的string1,例如:贷款协调员
让我说我有另一个string2,例如:财政学生贷款协调员
假设我有另一个string3,如:
让我说我有另一个string4,如:协调器
假设我有另一个string5,如:财务助理
。。
在Python中,找到与string1有关的所有字符串的最佳批准者是什么?例如:
由于字符串中的文本贷款协调员,字符串2必须处理字符串1。
因为单词Loan,String 3有一些事情要做。
字符串4有一些事情要做,因为协调器这个词。
字符串5没有什么可做的,所以我不关心这个字符串。
2、3和4应该返回“找到”或表示存在小匹配的内容。
。。
谢谢你的帮助!
发布于 2014-11-13 18:17:03
你可以使用集合交集。在字符串中设置一组独特的单词来进行比较。然后,使用来自其他字符串的一组单词进行交集。保留任何具有非空交集的字符串。
>>> s1 = 'Loan Coordinator'
>>> sList = ['Financial Student Loan Coordinator', 'Loan Operator', 'Coordinator', 'Financial Assistant']
>>> unique = set(s1.split()) # unique words in string 1
>>> [i for i in sList if unique & set(i.split())]
['Financial Student Loan Coordinator', 'Loan Operator', 'Coordinator']发布于 2014-11-13 18:23:13
#!/usr/bin/env python
import sys
def tokenise(s):
return set([word.lower() for word in s.split()])
def match_strings(primary, secondary):
primary_tokens = tokenise(primary)
secondary_tokens = tokenise(secondary)
matches = primary_tokens.intersection(secondary_tokens)
if matches:
print "{} matches because of {}".format(secondary, ", ".join(matches))
else:
print "{} doesnt match".format(secondary)
if __name__ == "__main__":
primary = sys.argv[1]
secondaries = sys.argv[2:]
for secondary in secondaries:
match_strings(primary, secondary)运行代码:
~/string_matcher.py "Loan Coordinator" "Financial Student Loan Coordinator" "Loan Operator" "Coordinator" "Financial Assistant"
Financial Student Loan Coordinator matches because of coordinator, loan
Loan Operator matches because of loan
Coordinator matches because of coordinator
Financial Assistant doesnt matchhttps://stackoverflow.com/questions/26915681
复制相似问题