【问题标题】:Naming convention for Python regular expressions?Python正则表达式的命名约定?
【发布时间】:2015-11-05 17:09:16
【问题描述】:

Python 中的正则表达式是否有公认的命名约定?或者如果没有,关于如何命名它们有什么建议?

通常我将它们命名为look_for_dateaddress_re 之类的名称,但我读过一些地方,在变量名中使用像'_re' 这样的后缀并不好。对我来说,似乎正则表达式需要一些东西来表明它是一个正则表达式,因为如果你将它命名为 dateaddress,你将无法做这样的事情,这似乎很直观:

date = date_re.match(text)

【问题讨论】:

    标签: python regex naming-conventions naming


    【解决方案1】:

    编译的正则表达式通常是常量,因此每个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)
    

    【讨论】:

    • 酷,我也想问一下大写的事情。感谢你的回答。所以这些是指导方针,而不是 PEP 诸神刻在石头上的?
    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2021-07-13
    • 2018-07-29
    相关资源
    最近更新 更多