Python正则表达式的命名规则?

5
有没有一种在Python中正则表达式的公认命名惯例?如果没有,有什么建议如何命名?
通常我会像这样命名:look_for_dateaddress_re,但我在多个地方读到过,在变量名中使用类似“_re”这样的后缀并不好。对我来说,似乎正则表达式需要一些东西来表明它是一个正则表达式,因为如果您将其命名为dateaddress,您将无法做出直观的操作,例如:
date = date_re.match(text)
1个回答

7
编译后的正则表达式通常是常量,因此应该按照 PEP 8 的规定使用UPPER_CASE_WITH_UNDERSCORES命名。我倾向于根据它们所匹配的内容来命名它们;以下是我最近编写的一些代码示例:
import re

VALID_CLOSURE_PATTERN = re.compile(r'''
    ^\d{2}    # starts with two digits 0-9
    [NY]{4}$  # followed by four Y/N characters
''', re.IGNORECASE + re.VERBOSE)


class RoadClosure(object):

    def __init__(self, ..., closure_pattern):
        """Initialise the new instance."""
        if not VALID_CLOSURE_PATTERN.match(closure_pattern):
            raise ValueError('invalid closure pattern: {!r}'.format(closure_pattern))
       ...

...

我认为这很清楚地说明了正在发生的事情,“VALID_CLOSURE_PATTERN”传达了“这描述了我们认为是有效闭合模式”的含义,像这样的一行代码:
if not VALID_CLOSURE_PATTERN.match(closure_pattern):

描述了它实际上以近似普通英语的方式执行的操作。因此在您的情况下,您可以编写:

date = VALID_DATE.match(text)

1
很酷,我本来就想问关于大写字母的事情。谢谢你的回答。所以这些只是指导方针,而不是由PEP神明刻意制定的吗? - nonex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接