使用Python中的Regex(仅库re),我想创建一个函数,它给出字符串中所有前导0的位置。例如,如果字符串为:我的房子有01花园和003房间。我想让我的函数返回13,27和28。我试着举例:
import re string = "My house has 01 garden and 003 rooms." pattern = "(0+)[1-9]\d*" print(re.findall(pattern,string))
显然,输出给我匹配,但没有位置...
1cklez4t1#
您可以执行以下操作:
import re text = "My house has 01 garden and 003 rooms." pattern = re.compile(r"\b0+") def leading_zeros_index(s: str) -> list: return [i for m in pattern.finditer(s) for i in range(m.start(), m.end())] print(leading_zeros_index(text))
输出:
[13, 27, 28]
基本上,您使用.finditer()来获取匹配对象,然后从匹配对象的.start()和.end()创建一个range()对象。我用\b0+作为模式。没有必要检查零后面的其他字符。\b是单词边界,这里的意思是,零应该在单词的开头。
.finditer()
.start()
.end()
range()
\b0+
\b
1条答案
按热度按时间1cklez4t1#
您可以执行以下操作:
输出:
基本上,您使用
.finditer()
来获取匹配对象,然后从匹配对象的.start()
和.end()
创建一个range()
对象。我用
\b0+
作为模式。没有必要检查零后面的其他字符。\b
是单词边界,这里的意思是,零应该在单词的开头。