在Python中,捕获组的类型可以是整数吗?
假设我有以下正则表达式:
>>> import re
>>> p = re.compile('[0-9]+')
>>> re.search(p, 'abc123def').group(0)
'123'我希望组中的'123'类型是int,因为它只能匹配整数。它感觉必须有一个更好的方法,而不是定义只匹配数字,然后必须将它转换成一个int,尽管如此。
背景是,我有一个包含多个命名捕获组的复杂正则表达式,其中一些捕获组只匹配整数。我希望这些捕获组是整数类型的。
发布于 2015-10-07 00:18:32
不,没有。您可以自己转换它,但是re对文本进行操作,并生成文本,仅此而已。
发布于 2015-10-07 00:52:05
不幸的是这是你所能做的最好的了。
>>> import re
>>> p = re.compile('[0-9]+')
>>> a = re.search(p, 'abc123def').group(0)
>>> a.isdigit()
True
>>> a
'123'
>>> type(a)
<class 'str'>从if创建一个isdigit()语句,然后从那里开始。
发布于 2021-04-23 18:03:52
用例:从两个街道号码中取平均值。
import pandas as pd
addresses = pd.Series(["3 - 5 Mint Road", "20-23 Cinnamon Street"])
def street_number_average(capture):
number_1 = int(capture.group(1))
number_2 = int(capture.group(2))
average = round((number_1 + number_2) / 2)
return str(average)
pattern = r'(\d\d?) *?- *?(\d\d?)'
addresses.str.replace(pattern, street_number_average)
# > 0 4 Mint Road
# > 1 22 Cinnamon Street不要忘记在对数字执行操作后将其转换回字符串,否则它将返回一个NaN。
https://stackoverflow.com/questions/32981774
复制相似问题