Разница в сокращенном названии месяца в Python на разных машинах - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь проанализировать немецкие даты в виде %d. %b. %Y.
Используя один и тот же языковой стандарт, я получаю разные сокращения для März (марш месяца).

Когда я запускаю:

locale.setlocale(locale.LC_ALL, 'de_DE')
loc = locale.getlocale()
print("changed locale " + str(loc))
print(datetime(2020, 3, 19).strftime("%b"))

Вкл. Windows 10, Python 3.7.2 распечатывается:

измененный язык ('de_DE', 'ISO8859-1') Mrz

Однако облачная функция (также python 3.7) печатает

измененный язык ('de_DE', 'ISO8859-1') Mär

Как может быть, что März когда-то сокращенно Mär и на другой машине Mrz и как это можно решить? Есть ли другой язык для использования?

1 Ответ

0 голосов
/ 19 марта 2020

Я нашел обходной путь на Python -Forum.de .

Идея состоит в том, чтобы создать собственный синтаксический анализатор, который вполне подходит для моего случая:

class GermanParserInfo(parser.parserinfo):
    MONTHS = [
        ('Jan', 'Januar'),
        ('Feb', 'Februar'),
        ('Mär', 'Mrz', 'März'),
        ('Apr', 'April'),
        ('Mai',),
        ('Jun', 'Juni'),
        ('Jul', 'Juli'),
        ('Aug', 'August'),
        ('Sep', 'Sept', 'September'),
        ('Okt', 'Oktober'),
        ('Nov', 'November'),
        ('Dez', 'Dezember'),
    ]

date = parser.parse(input, GermanParserInfo())
...