python - 无法使用带有 re 的数组,搜索功能
问题描述
我正在尝试解决我正在编写的代码遇到的这个问题,我似乎无法找到任何关于它的答案,并且最简单的方法是最耗时的。如果有人可以提供帮助,请感谢所有评论,我会考虑所有评论。
from re import search
x = "forth" #this value can change so don't think its just a set value
array = ["first", "second", "third", "forth", "fifth"]
if search(array[0][1][2][3][4], x):
print(x)
else:
print("error")
这不起作用,我正在考虑的唯一另一种方法是一个一个地做一个巨大的 if 语句,其中包含一个 elif 部分的所有值,但在我这样做之前,我宁愿检查是否有更简单的方法它。
解决方案
re.search() 在字符串(不是模式数组)中查找特定模式。
您的array[0][1][2][3][4]
符号不代表数组的 5 个元素,它对应于从 5 维矩阵访问元素。
array
要检查 in 中是否存在任何单词,x
您可以将数组转换为单个模式或使用 any():
pattern = r"\b(" + "|".join(array) + ")\b" # single pattern, of whole words
if re.search(pattern,x):
print(x)
else:
print("error")
或者
if any(re.search(p,x) for p in array): # if any(p in x for p in array):
print(x)
else:
print("error")
请注意,第二种方法不需要 re 模块,并且会在单词中找到子字符串(例如,“stackoverflow”中的“over”),这可能是也可能不是您想要的。
如果它包含任何单词,您的代码当前会打印整个字符串,但如果您的目标是打印找到的单词,则应使用 re.findall():
for word in re.findall(pattern,x):
print(word)
推荐阅读
- asp.net-mvc - queryBuilder.js - 如何将 JSON 规则转换为 IFilterRule?
- c# - 如何在 C# 中检查生产者发送的消息是否已成功到达 Kafka 服务器?
- azure - 即使凭据正确,Azure Log Analytics API 也会返回 InvalidAuthorization
- flutter - Dart 在嵌套数据类上使用折叠来获取计数总和
- intershop - 如何告诉页面缓存忽略某些 URL 参数
- database - woocommerce 为每个客户添加 meta_key 和 meta_value
- firebase - 当我登录“人员”并终止应用程序时如何防止“管理员”登录(FLUTTER)
- azure-data-factory - 使用带有语言环境和格式参数的 toInteger 函数
- styled-components - 样式组件中是否有扩展 createGlobalStyle
- php - 设置值时访问当前数组键