Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查python中两个字符串之间的交集_Python_Arrays_String_String Comparison_Set Intersection - Fatal编程技术网

检查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

我试图使用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分。我遗漏了什么?

集合一包含一个字符串,集合二包含三个字符串,字符串
“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'