python - 比较某个字符串和字符串列表的某个出现
问题描述
我有一个字符串"spaghet in insert in impossible(banana)"
(示例字符串。),我将调用它testString
。我还有一个字符串中每个“单词”的列表,使用以下代码生成:
stringList = re.split("(\W)", testString)
for item in stringList:
if item == "":
stringList.remove(item)
该列表如下所示:
["spaghet", "in", "insert", "in", "impossible", "(", "banana", ")"]
我需要一个函数,它可以为我的字符串BY ITSELF 中每次出现的单词“in”提供开始和结束位置。本质上,它将匹配“spaghet”之后的“in”和“insert”之后的“in ”,但不匹配“insert”中的“ in ”。
在我当前的示例中,它将返回((9, 10), (19, 20))
. 当然,“in”在这里只是一个占位符,因为它会在我的代码中被替换为一个有意义的字符串。任何帮助将不胜感激。
谢谢,蓝
解决方案
一个班轮-
>>> import re
>>> [(m.start(0) + 1, m.end(0)) for m in re.finditer(r'\bin\b', 'spaghet in insert in impossible(banana)')]
[(9, 10), (19, 20)]
解释
我们将使用正则表达式\bin\b
来匹配in
单词,您可以根据自己的喜好随意更改。
re.finditer
返回匹配对象的可迭代对象,匹配对象具有方便的start
方法end
来提取每个匹配项的开始和结束索引(0 索引)。
您要求开始索引为 1 索引,因此m.start(0) + 1
0 是完全匹配(没有捕获的组)
推荐阅读
- javascript - 在 KotlinJS 上实例化期望“new”关键字的 Javascript 类
- flutter - 是否可以在颤振上制作水平模态?左还是右
- opencv - 如何使用python重现这种数字文档扫描效果?
- javascript - 移除 DOM 节点抛出异常 Node,removeChild 必须是 Node 的实例
- jquery - SELECT2 - 重复选项
- javascript - 无法从反应原生的 PHP API 返回的 JSON 中获取值
- stata - spseg-Reardon 和 O'Sullivan 的空间隔离包
- flutter - 如何在对话框中打开一个小页面?
- python - ValueError 无法分配“