【问题标题】:Find intersection of words in two strings in python在python中查找两个字符串中单词的交集
【发布时间】:2021-01-25 16:06:21
【问题描述】:

我有两个包含单词的字符串: 'dan esh gah''da nesh gah'

我需要交集词,在这种情况下是'gah'

我用过这段代码

vocab=['dan esh gah']
gold=['da nesh gah']
s1 = ''.join(vocab)
s2=''.join(gold)

a=[]
track=[]
for k in range(len(s1)+1):
    if k!=0:
        for ka in range(0,len(s1)+1,k):
            if s1[ka:ka+k] in s2:
                track.append((len(s1[ka:ka+k])+1,s1[ka:ka+k]))
intersect=max(track)[1]
print(intersect)

但答案是错误的:

sh ga

请帮我解决这个问题。

【问题讨论】:

  • set(s1.split()) & set(s2.split())
  • 'dan esh gah' 是一个包含 3 个单词的字符串。
  • 是的。这是正确的。谢谢

标签: python string list intersection word


【解决方案1】:

您可以在set() 对象上使用& 进行交集

>>> s1='da nesh gah'
>>> s2='dan esh gah'

>>> set(s1.split()) & set(s2.split())
set(['gah'])

在这里,我首先使用str.split() 将字符串转换为单词列表。 set() 会将列表转换为set object,您可以在其上使用& 找到两个集合之间的交集。

如果你更喜欢函数式风格,你可以使用set().intersection()得到同样的结果:

>>> set(s1.split()).intersection(s2.split())
set(['gah'])

【讨论】:

  • 有没有办法知道列表中的哪个单词匹配? (我正在使用 set().intersection())谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 2018-02-28
  • 2011-12-26
  • 1970-01-01
  • 2016-05-28
相关资源
最近更新 更多