edit the original string by removing duplicate spaces,
add a comma before the date, remove spaces in the hyphen, and the dot
end of all strings.
To solve with Regular Expressions, the deletion of characters (blank and dot) is separated from the insertion of characters (comma).
Regex
Remove characters
The following regular expression is used to check multiple spacing, hyphen spacing and endpoint:
\s+(?=\s|-)|(?<=-)\s+|\.$
And the demo on Regex101 can be seen in the link.
Add Characters
The following regular expression is used to check the date and insert the comma:
(?<!,)\s(?=de\s\d{1,2}\sde\s[a-zç]+\sde\s\d{4})
with the IGNORECASE flag
And the demo on Regex101 can be seen here.
Code
# coding=utf-8
import re
frases = ["DECRETO Nº 76.326 DE 23 DE SETEMBRO DE 1975.",
'DECRETO Nº 76.326, DE 23 DE SETEMBRO DE 1975.',
'DECRETO-LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975.',
'LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975.',
"Decreto Nº 76.326 DE 23 DE SETEMBRO DE 1975",
"Decreto Nº 76.326 de 23 DE Setembro de 1975.",
"DECRETO - LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975.",
"DECRETO- LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975.",
"DECRETO -LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975."]
print """
VERIFICAÇÃO DE ESPAÇOS EXTRAS (2 ou mais) ou espaçamento do hífem OU PONTO FINAL
https://regex101.com/r/SVEi1X/3
"""
padrao_regex = re.compile(r"\s+(?=\s|-)|(?<=-)\s+|\.$")
substituicoes = [re.sub(padrao_regex, "", frase) for frase in frases]
if substituicoes:
for substituicao in substituicoes:
print substituicao
print """
VERIFICAÇÃO DE DATAS
https://regex101.com/r/SVEi1X/5
"""
padrao_regex = re.compile(r"(?<!,)\s(?=\d{1,2}\sde\s[a-zç]+\sde\s\d{4})", re.IGNORECASE)
resultados = [re.sub(padrao_regex, ", ", substituicao) for substituicao in substituicoes]
if resultados:
for resultado in resultados:
print resultado
Where substitutions by Regex are performed with a loop in the lists as follows: [re.sub(padrao_regex, "caractere de substituição", item) for item in lista]
Upshot
VERIFICAÇÃO DE ESPAÇOS EXTRAS (2 ou mais) ou espaçamento do hífem OU PONTO FINAL
https://regex101.com/r/SVEi1X/3
DECRETO Nº 76.326 DE 23 DE SETEMBRO DE 1975
DECRETO Nº 76.326, DE 23 DE SETEMBRO DE 1975
DECRETO-LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975
LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975
Decreto Nº 76.326 DE 23 DE SETEMBRO DE 1975
Decreto Nº 76.326 de 23 DE Setembro de 1975
DECRETO-LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975
DECRETO-LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975
DECRETO-LEI Nº 76.326 DE 23 DE SETEMBRO DE 1975
VERIFICAÇÃO DE DATAS
https://regex101.com/r/SVEi1X/5
DECRETO Nº 76.326, DE 23 DE SETEMBRO DE 1975
DECRETO Nº 76.326, DE 23 DE SETEMBRO DE 1975
DECRETO-LEI Nº 76.326, DE 23 DE SETEMBRO DE 1975
LEI Nº 76.326, DE 23 DE SETEMBRO DE 1975
Decreto Nº 76.326, DE 23 DE SETEMBRO DE 1975
Decreto Nº 76.326, de 23 DE Setembro de 1975
DECRETO-LEI Nº 76.326, DE 23 DE SETEMBRO DE 1975
DECRETO-LEI Nº 76.326, DE 23 DE SETEMBRO DE 1975
DECRETO-LEI Nº 76.326, DE 23 DE SETEMBRO DE 1975
What exactly changes from the first list to the second? Spaces and comma?
– Woss
@Andersoncarloswoss, yes, sir. need to edit the original string by removing duplicate spaces, adding a comma before the date, removing spaces in the hyphen, and the endpoint of all strings.
– britodfbr