Python 使用正则表达式的日期规范化

Python 使用正则表达式的日期规范化,python,regex,Python,Regex,我正在做一个日期规范化的事情,将没有以有效格式输入的日期更改为有效格式。比如说 1|1/2002 变成 01-01-2002 05-09-0020 及 变成 01-01-2002 05-09-0020 分隔符仅限于[-/|],任何不跟随的输入都已从列表中抛出 re.sub(模式、应答、字符串、计数=0、标志=0) 我查看了库示例,但确实找不到任何有助于解析数据的内容 >>> def dashrepl(matchobj): ... if matchobj.gro

我正在做一个日期规范化的事情,将没有以有效格式输入的日期更改为有效格式。比如说

1|1/2002
变成

01-01-2002
05-09-0020

变成

01-01-2002
05-09-0020
分隔符仅限于[-/|],任何不跟随的输入都已从列表中抛出

re.sub(模式、应答、字符串、计数=0、标志=0)

我查看了库示例,但确实找不到任何有助于解析数据的内容

>>> def dashrepl(matchobj):
...     if matchobj.group(0) == '-': return ' '
...     else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'
>>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)
'Baked Beans & Spam'
使用捕获组:

>>> import re
>>>
>>> pattern = re.compile(r'\b(\d{1,2})\D(\d{1,2})\D(\d{1,4})\b')
>>> def repl(match):
...     return '{:0>2}-{:0>2}-{:0>4}'.format(*match.groups())
...
>>> pattern.sub(repl, '1|1/2002')
01-01-2002
>>> pattern.sub(repl, '5|9-20')
05-09-0020
使用捕获组:

>>> import re
>>>
>>> pattern = re.compile(r'\b(\d{1,2})\D(\d{1,2})\D(\d{1,4})\b')
>>> def repl(match):
...     return '{:0>2}-{:0>2}-{:0>4}'.format(*match.groups())
...
>>> pattern.sub(repl, '1|1/2002')
01-01-2002
>>> pattern.sub(repl, '5|9-20')
05-09-0020
输出:

01-01-2002
05-09-0020
或:

输出:

01-01-2002
05-09-0020
或:


那真的很有帮助!非常感谢。它叫什么东西:你做的0>2。我想了解更多。谢谢大家!@LeonardLie,
0
是填充字符<代码>>向右对齐<代码>2是宽度。@Leonardie,请看。非常感谢!到时候我会接受答案的。那真的很有帮助!非常感谢。它叫什么东西:你做的0>2。我想了解更多。谢谢大家!@LeonardLie,
0
是填充字符<代码>>向右对齐<代码>2是宽度。@Leonardie,请看。非常感谢!计时后我接受答案。这是问题的一部分吗?这是问题的一部分吗?