Python中不同机器的缩写月份名称的差异

Python中不同机器的缩写月份名称的差异,python,datetime,locale,abbreviation,Python,Datetime,Locale,Abbreviation,我正试图以%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上,Python3.7.2打印: 更改了区域设置('de_de'

我正试图以
%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ärz
曾经被缩写为
Mär
,并且在另一台机器上
Mrz
如何解决? 是否要使用其他语言环境?

我找到了一个解决方法

我们的想法是创建一个自定义解析器,它对我的案例非常有效:

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())
我找到了一个解决办法

我们的想法是创建一个自定义解析器,它对我的案例非常有效:

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())

FWIW,
locale.setlocale(locale.LC_ALL,'de_de')
给了我一个
locale.Error:不支持的locale设置
,但是
locale.setlocale(locale.LC_ALL,'german_german')
工作并打印
更改的locale('de_de','cp1252')
Mrz
。(在Windows机器上同时使用Python 2.7.17和Python 3.8.1)看来
März
的德语缩写是
März
——因此两者都不正确。@martineau我不知道你从哪里得到的,但
März
不是缩写。我看了好几个资料,似乎都是这样。不管怎样,德语维基百科文章的第一行写着“dermärz(Abkürzung Mrz.order Mär[1]),部分翻译成英语的是“March(缩写为Mrz.或Mär[1]),所以答案是OK.FWIW,
locale.setlocale(locale.LCäALL,'deäde')
给我一个
locale.Error:不支持的locale设置
,但是
locale.setlocale(locale.LC_ALL,'german_germany')
工作并打印
更改的locale('de_de','cp1252')
Mrz
。(在Windows机器上同时使用Python 2.7.17和Python 3.8.1)看来
März
的德语缩写是
März
——因此两者都不正确。@martineau我不知道你从哪里得到的,但
März
不是缩写。我看了好几个资料,似乎都是这样。不管怎样,德语维基百科文章的第一行写着“dermärz(Abkürzung Mrz.ordermär[1]),部分翻译成英语的是“March(缩写为Mrz.或Mär[1]),所以答案是两种方式都可以。