Sli*_*ind 1 regex data-extraction python-3.x
我有一组日期,我正在使用以下方法来验证它们。我想确认使用这么多 try-except 块是正确的方法还是有更好的方法?
此外,日期也可以采用其他格式,例如 dd/mm/yyyy,所以我应该包括所有可能的格式还是有更好的方法?
dob="""
10/23/1964
9/14/2010
12-23-98
"""
try:
date_time= datetime.strptime(dob, '%m/%d/%Y')
except:
try:
date_time= datetime.strptime(dob, '%m-%d-%Y')
except:
try:
date_time= datetime.strptime(dob, '%m/%d/%y')
except:
try:
date_time= datetime.strptime(dob, '%m-%d-%y')
except:
date_time="invalid date"
print(date_time)
Run Code Online (Sandbox Code Playgroud)
根据@Mad Physicist 的要求:
dob = '''
10/23/1964
9/14/2010
12-23-98
'''
def validate(sdatetime):
for pattern in [
'%m/%d/%Y',
'%m-%d-%Y',
'%m/%d/%y',
'%m-%d-%y',
]:
try:
# return upon success
return datetime.strptime(sdatetime, pattern)
except ValueError:
pass
# handle the error if you want
return "invalid date"
for line in dob.splitlines():
if line:
print(line, validate(line))
Run Code Online (Sandbox Code Playgroud)
原帖:
dob = '''
10/23/1964
9/14/2010
12-23-98
'''
def validate(sdatetime):
for fn in [
lambda sdatetime: datetime.strptime(sdatetime, '%m/%d/%Y'),
lambda sdatetime: datetime.strptime(sdatetime, '%m-%d-%Y'),
lambda sdatetime: datetime.strptime(sdatetime, '%m/%d/%y'),
lambda sdatetime: datetime.strptime(sdatetime, '%m-%d-%y'),
lambda sdatetime: "invalid date"
]:
try:
# return upon success
return fn(sdatetime)
except ValueError:
pass
# handle the error if you want
for line in dob.splitlines():
if line:
print(line, validate(line))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |