4

我需要从这样的字符串中解析波兰日期:

locale.setlocale(locale.LC_TIME, 'pl_PL.utf8')
print(time.strptime("27 luty 13:00:00", '%d %B %H:%M:%S'))

实际上以上工作正常,但波兰语日期并不像英语那样微不足道。波兰语的有效日期是这样的:

27 lutego 13:00:00

不幸的是 strptime 无法打印:

ValueError: time data '27 lutego 13:00:00' does not match format '%d %B %H:%M:%S'

解析来自不同语言环境的日期的万无一失的解决方案是什么?

4

1 回答 1

1

您可以使用查找表:

lookup_table = {
    "stycznia": "styczeń",   "lutego": "luty",
    "marca": "marzec",       "kwietnia": "kwiecień",
    "maja": "maj",           "czerwca": "czerwiec",
    "lipca": "lipiec",       "sierpnia": "sierpień",
    "września": "wrzesień",  "października": "październik",
    "listopada": "listopad", "grudnia": "grudzień"
}
s = "27 lutego 13:00:00"
for k, v in lookup_table.items():
    s = s.replace(k, v)

locale.setlocale(locale.LC_TIME, "pl_PL.utf8")
result = time.strptime(s, "%d %B %H:%M:%S")    # time.struct_time(tm_year=1900, tm_mon=2, tm_mday=27, tm_hour=13, 
                                               #                  tm_min=0, tm_sec=0, tm_wday=1, tm_yday=58, tm_isdst=-1)
于 2020-10-26T13:35:07.647 回答