在python regex中定义或确定类型整数

时间:2015-10-07 00:14:52

标签: python regex python-2.7

Python中是否可以将捕获组的类型设为整数? 我们假设我有以下正则表达式:

>>> import re
>>> p = re.compile('[0-9]+')
>>> re.search(p, 'abc123def').group(0)
'123'

我希望组中'123'的类型是int,因为它只能匹配整数。感觉必须有一个更好的方法,而不是定义只匹配数字,然后不得不将其转换为int。 背景是我有一个复杂的正则表达式,有多个命名的捕获组,其中一些捕获组只匹配整数。我希望那些捕获组的类型为整数。

4 个答案:

答案 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网站或阅读其他网站上的正则表达式。