可以为组分配不同的值而不是使用正则表达式

时间:2017-09-20 05:47:32

标签: python regex

问题

在组与'0'匹配的情况下,有没有办法让正则表达式匹配方法分配''

详情

我有一个项目,它使用许多不同的正则表达式来评估一系列字段。某些字段可选为空白,在这些情况下,正则表达式返回空字符串('')的匹配项。

对于其中一些字段类型,该字段意味着包含一个整数,一个空字符串稍后将被程序解释为零。

为了将空白变为'0',我做了类似以下的事情:

blank_to_zero = {'' : '0'}

my_value = my_regex.match('').group('FIELD_NAME')

number = int(blank_to_zero.get(my_value, my_value))

摆脱blank_to_zero.get(my_value, my_value)位会更好 - 更可读 - 只需要这样:

number = int(my_value)

我确信还有其他一些有趣的方法可以解决这个问题,但这个问题实际上是关于用正则表达式组返回其他文字。如果可能的话请坚持这个问题。

所以我的问题是:这可以吗?您是否可以指定除了与某个组匹配的字符串之外的表达式匹配返回的文字?

1 个答案:

答案 0 :(得分:-1)

我认为有更好的选择。实现一个名为_int的函数来替换int

def _int(object):
    if object == "":
        return 0
    else:
        return int(object)

然后您只需要像number = _int(my_value)

一样使用它

此外,您可以覆盖int

def int(object):
    import builtins
    if object == "":
        return 0
    else:
        return builtins.int(object)