2

可能重复:
检查另一个字符串中是否存在多个字符串

假设我有一个允许的单词/短语列表:

'Stack'
'Overflow'
'Stack Overflow'
'Stack Exchange'
'Exchange'

以及要解析的以下文本:

'Hello, and welcome to Stack Overflow. 
 Here are some words which should match: Stack, Exchange.'

我想获取在允许列表中找到的单词列表:

  • '堆栈溢出'
  • '堆'
  • '交换'

实现结果的最佳方法是什么?

我将使用的允许列表可能至少有一千个单词/短语。

4

3 回答 3

2

将单词放在列表中并在使用后

def intersect(x, y):
    return list(set(x) & set(y))
word_list_text=string.split(text)
words_found={}
words_found=intersect(word_list_text, words)
于 2012-12-30T01:15:36.127 回答
0

如果您有以下短语:

phrases = ['Stack','Overflow','Stack Overflow','Stack Exchange','Exchange']

然后文本为:

text = """Hello, and welcome to Stack Overflow. 
Here are some words which should match:Stack, Exchange."""

然后可以进行以下操作:

found_words = [word for word in phrases if word in text]

如果它们不在文本中,这将消除其他短语。尽管除了指定的内容之外,这也会溢出。

于 2012-12-30T05:10:52.457 回答
0

让单词成为您要搜索的单词列表和要搜索单词的段落(给出的信息段落)

for i in words:
    if i in paragraph:
        print i

此代码适用于您问题中的段落和单词,但请注意,如果我们有 stackoverflow 而没有堆栈(单独),此代码将打印堆栈,这既是优点也是缺点,取决于您的目的,如果您想要它对于单个单词使用这个

y=paragraph.split()
for i in words:
    if i in y:
        print i
于 2012-12-30T01:16:23.083 回答