我必须验证从文件导入的某些日期,日期有不同的格式。例如%Y /%m /%d和%d /%m /%Y。问题是我必须重新格式化它们以便能够通过彼此分开它们等。
我发现我需要使用Try / Except,但是当我使用以下代码时(其中date [1]是所有日期):
更新:
我正在尝试使用strptime和strftime更改错误格式的不同代码。但是,我不知道它是否是使用strptime / strftime的好方法除外?除了仅用于印刷品等吗?
代码:
for dates in data_from_file:
dates = (dates[1])
print(dates)
try:
validate_format = datetime.datetime.strptime(dates, '%d/%m/%Y')
except ValueError:
datetime.datetime.strptime(dates, '%Y/%m/%d').strftime('%d/%m/%Y')
except ValueError:
datetime.datetime.strptime(dates, '%d. %B %Y').strftime('%d/%m/%Y')
除ValueError之外的第一个工作,因为我看到time data *format* does not match '%d/%m/%Y'
错误的格式发生了变化。有三种不同的格式,所以我也必须改变最后一种格式。但它似乎记得第一个格式,除了ValueError?
现在说:ValueError: time data '%d. %B %Y' (in numbers, ofc) does not match format '%Y/%m/%d'
答案 0 :(得分:0)
结果:
for line in data_file:
line = (line.decode('utf-8').strip())
if line.startswith('#'):
pass
else:
names, birthdates, residences, genders = line.split('#')
try:
datetime.strptime(birthdates, '%d/%m/%Y')
except:
try:
bad_format = birthdates
birthdates = datetime.strptime(bad_format, '%Y/%m/%d').strftime('%d/%m/%Y')
except ValueError:
bad_format_letters = birthdates
if bad_format_letters in bad_format_letters:
birthdates = datetime.strptime(bad_format_letters, '%d. %B %Y').strftime('%d/%m/%Y')
nameslist.append(names)
birthdateslist.append(birthdates)
residenceslist.append(residences)
genderslist.append(genders)