带德语月份缩写的日期字符串转datetime格式不匹配如何解决
问题原因
- 格式串不匹配:输入的日期字符串中日期数字后带有
.符号,你使用的%d %b %Y没有匹配该符号,导致解析失败。 - 月份缩写不匹配:
Okt是德语区域的十月缩写,Python默认的英文区域环境下仅识别Oct作为十月的缩写,无法识别Okt。
解决方案1(适配区域格式)
通过修改Python的时间区域设置,让解析器可以识别德语月份缩写,同时修改格式串匹配.符号:
from datetime import datetime import locale # Windows系统用这句设置德语区域 locale.setlocale(locale.LC_TIME, 'de_DE') # Linux/macOS系统用这句设置德语区域 # locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8') date_list = ['1. Okt 2021', '2. Okt 2021', '3. Okt 2021', '4. Okt 2021', '5. Okt 2021', '6. Okt 2021', '24. Sep 2021', '25. Sep 2021', '26. Sep 2021'] # 格式串增加.匹配日期后的符号 dates = [datetime.strptime(x,"%d. %b %Y") for x in date_list]
解决方案2(无需修改区域设置)
直接对原始日期字符串做预处理,把德语月份缩写替换为英文缩写,再调整格式串即可:
from datetime import datetime date_list = ['1. Okt 2021', '2. Okt 2021', '3. Okt 2021', '4. Okt 2021', '5. Okt 2021', '6. Okt 2021', '24. Sep 2021', '25. Sep 2021', '26. Sep 2021'] processed_list = [x.replace('Okt', 'Oct') for x in date_list] dates = [datetime.strptime(x,"%d. %b %Y") for x in processed_list]
内容的提问来源于stack exchange,提问作者mika
相关产品推荐
相关产品推荐

