检查字符串是否包含python字典中的单词



我只想检查给定字符串是否包含字典中的单词

names = ["Joe", "Smith", "Nancy"]

string = "Her name was Nancy"
if names in string:
print(name)

对于本例,我希望它输出名称'Nancy'

你好,我想这可以解决你的问题:

string = "Her name was Nancy"
names = ["Joe", "Smith", "Nancy"]
for name in names:
if name in string:
print("True")

您可以使用re:

import re
names = ["Joe", "Smith", "Nancy"]
string = "Her name was Nancy. His name was Smith"
result = re.findall('|'.join(names), string)
print(*result, sep='n')

Nancy
Smith

有几点。首先,names是一个列表而不是字典,而string恰好是一个字符串。所以在你提供的代码中没有字典。无论如何,看起来您想要查看列表中的元素是否包含在字符串中。为此,您应该遍历列表,然后检查每个元素是否在目标字符串内。然后,您可以简单地打印匹配项。

names = ["Joe", "Smith", "Nancy"]
string = "Her name was Nancy"
for name in names:
if name in string:
print(name)

您可以使用带有生成器表达式和可选默认值的next执行以下操作:

name = next((n for n in names if n in string), None)
print(name)

,

x = next(iterator, default)

是以下习语的简写:

for x in iterator:
break        # take the first if present 
else:
x = default  # or fallback

如果您只想匹配字符串中的整个单词(令牌),您可能需要先将其str.split:

tokens = set(string.split())  # set has a better contains-check
name = next((n for n in names if n in tokens) , None)

一些文档:

  • next
  • set
  • str.split
  • for-else andbreak
  • <
  • 生成器表达式/gh>

python列表推导语法:

[print(name) for name in names if name in string]

如果你想把结果存储在var中:

res = [name for name in names if name in string]

根据您所写的内容,names不是字典,而是数组。假设names确实是一个数组,这应该可以满足您的要求。

names = ["Joe", "Smith", "Nancy"]

string = "Her name was Nancy"
for name in names:
if names in string:
print(name)

最新更新