在字符串中查找数组项

Sin*_*hus 5 python arrays string find match

我知道可以string.find()用来在字符串中查找子字符串.

但是,找出其中一个数组项是否在不使用循环的情况下在字符串中具有子字符串匹配的最简单方法是什么?

伪代码:

string = 'I would like an apple.'
search = ['apple','orange', 'banana']
string.find(search) # == True
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 21

你可以使用一个生成器表达式(不知何故一个循环)

any(x in string for x in search)
Run Code Online (Sandbox Code Playgroud)

生成器表达式是括号内的部分.它创建一个iterable,返回元组中x in string每个元素的值.反过来返回是否包含子字符串.最后,Python内置迭代迭代它传递的迭代,并在其任何项目评估时返回.xsearchx in stringstringxany()True

或者,您可以使用正则表达式来避免循环:

import re
re.search("|".join(search), string)
Run Code Online (Sandbox Code Playgroud)

我会选择第一个解决方案,因为正则表达式有陷阱(逃避等).

  • 生成器表达式为+1.-1表示正则表达式.+1推荐反对正则表达式.好哇!+1! (2认同)