Python中是否可以将捕获组的类型设为整数? 我们假设我有以下正则表达式:
>>> import re
>>> p = re.compile('[0-9]+')
>>> re.search(p, 'abc123def').group(0)
'123'
我希望组中'123'
的类型是int,因为它只能匹配整数。感觉必须有一个更好的方法,而不是定义只匹配数字,然后不得不将其转换为int。
背景是我有一个复杂的正则表达式,有多个命名的捕获组,其中一些捕获组只匹配整数。我希望那些捕获组的类型为整数。
答案 0 :(得分:2)
不,没有。你可以自己转换它,但re
对文本进行操作,并生成文本,就是这样。
答案 1 :(得分:2)
不幸的是,这是你能做的最好的事情。
>>> 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()
语句并从那里开始。
答案 2 :(得分:1)
用例示例:取两个街道号码的平均值。
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
。
答案 3 :(得分:0)
由于措辞,人们可能会误解这个问题。
它们是正确的,因为正则表达式只对basetring的子类进行操作,其中包括str和unicode Python类。
然而,在正则表达式的域中,有符合字符类的符号(在正则表达式术语中)
gem 'react-rails', '~> 1.3.0'
应该为您做到这一点。
有关详细信息,请参阅pythex网站或阅读其他网站上的正则表达式。