检查python中两个字符串之间的交集
我试图使用Python检查两个字符串之间的交集。 我定义了这个函数:检查python中两个字符串之间的交集,python,arrays,string,string-comparison,set-intersection,Python,Arrays,String,String Comparison,Set Intersection,我试图使用Python检查两个字符串之间的交集。 我定义了这个函数: def check(s1,s2): word_array = set.intersection(set(s1.split(" ")), set(s2.split(" "))) n_of_words = len(word_array) return n_of_words 它适用于某些示例字符串,但在这种特定情况下: d_word = "BANGKOKThailand" nlp_word = "Despi
def check(s1,s2):
word_array = set.intersection(set(s1.split(" ")), set(s2.split(" ")))
n_of_words = len(word_array)
return n_of_words
它适用于某些示例字符串,但在这种特定情况下:
d_word = "BANGKOKThailand"
nlp_word = "Despite Concerns BANGKOK"
print(check(d_word,nlp_word))
我得了0分。我遗漏了什么?集合一包含一个字符串,集合二包含三个字符串,字符串
“BANGKOKThailand”
不等于字符串“曼谷”
我可以看到两个可能的错误:
n_of_words = len(array)
应该是
n_of_words = len(word_array)
及
在两者之间缺少一个空格
"BANGKOK Thailand"
修复这两个更改后,我得到了1的结果。我一直在寻找2个字符串的最大公共部分,不管这部分在哪里
def get_intersection(s1, s2):
res = ''
l_s1 = len(s1)
for i in range(l_s1):
for j in range(i + 1, l_s1):
t = s1[i:j]
if t in s2 and len(t) > len(res):
res = t
return res
#get_intersection(s1, s2)
也适用于此示例:
>>> s1 = "BANGKOKThailand"
>>> s2 = "Despite Concerns BANGKOK"
>>> get_intersection('aa' + s1 + 'bb', 'cc' + s2 + 'dd')
'BANGKOK'
你们在空格上分开,d_单词中有n个空格,你们期待什么?哦,你们是对的。我想我不能用这种方式完成我的任务,也许我得试试正则表达式。你认为呢?正则表达式,或者NLPIf中的一些更高级的单词分隔方法。如果其中一个字符串总是被正确地分隔(例如,使用空格),你可以使用
sum(s1中的单词表示s2中的单词。split(“”)
,进行子字符串测试。如果这类
与这类
匹配,可能会导致误报,但如果希望代码与给定的示例字符串匹配,则可能无法避免这种情况。我修复了第一个,但不幸的是,“BANGKOKThailand”没有空格(我不得不接受它,它是在我试图分析的一个txt文件中定义的)我可以看到您也修复了word_数组变量,所以很高兴看到它现在工作!不幸的是它不工作,我不能添加空白。这是一个文本处理的自动算法,这是我应该介绍的一个特殊情况:(不确定NLP,但如果NLP_单词总是用空格分隔,尽管d_单词不是;您可以使用KMP循环NLP_单词中的每个单词并搜索d_单词,保留两侧匹配的部分,并忽略它们以进行后续尝试。
>>> s1 = "BANGKOKThailand"
>>> s2 = "Despite Concerns BANGKOK"
>>> get_intersection('aa' + s1 + 'bb', 'cc' + s2 + 'dd')
'BANGKOK'