2015-11-05 44 views
5

Esiste una convenzione di denominazione accettata per le espressioni regolari in Python? O se non c'è, quali sono alcuni suggerimenti su come nominarli? Di solito li chiamo qualcosa come look_for_date o address_re ma ho letto diversi posti che l'uso di un suffisso come "_re" in un nome di variabile non è buono. A me sembra che l'espressione regolare ha bisogno di qualcosa per indicare che è un'espressione regolare, dal momento che se hai nominato solo date o address, non sarebbe in grado di fare cose come questa, che sembra intuitivo:Convenzione di denominazione per le espressioni regolari Python?

date = date_re.match(text)

risposta

5

Le espressioni regolari compilate sono costanti, quindi dovrebbe avere un nome UPPERCASE_WITH_UNDESCORES. Io tendo a chiamarli per quello che vorrebbe abbinare; per fare un esempio da qualche codice che ho scritto di recente:

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)) 
     ... 

... 

Penso che questo lo rende abbastanza chiaro quello che sta succedendo, VALID_CLOSURE_PATTERN comunica "Questo descrive quello che noi consideriamo essere un modello di chiusura valida" e una linea Mi piace:

if not VALID_CLOSURE_PATTERN.match(closure_pattern): 

descrive ciò che effettivamente sta facendo in inglese semplice. Quindi, nel tuo caso, potresti scrivere:

date = VALID_DATE.match(text) 
+1

Cool, volevo chiedere anche della faccenda. Grazie per la risposta. Quindi queste sono linee guida e non scolpite nella pietra dagli dei del PPE? – nonex