检查python中两个字符串之间的交集

时间:2016-05-18 22:06:43

标签: 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 = "Despite Concerns BANGKOK"

print(check(d_word,nlp_word))

我得到了0.我错过了什么?

3 个答案:

答案 0 :(得分:0)

设置一个包含单个字符串,设置两个3个字符串,字符串"BANGKOKThailand"不等于字符串"BANGKOK"

答案 1 :(得分:0)

我可以看到两个可能是错误:

n_of_words = len(array)

应该是

n_of_words = len(word_array)

d_word = "BANGKOKThailand"

错过了中间的空格

"BANGKOK Thailand"

修复这两个更改给了我一个结果。

答案 2 :(得分:0)

无论这部分在哪里,我一直在寻找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'