Python DateTime解析在一台机器上工作,但在另一台机器上崩溃

Python DateTime解析在一台机器上工作,但在另一台机器上崩溃,python,datetime,encoding,strftime,Python,Datetime,Encoding,Strftime,我有以下DateTime和字符串编码相关问题: 我想从字符串“Freitag,03.März 2017”中解析一个日期。为此,我使用以下代码行: locale.setlocale(locale.LC_ALL, "de_DE") if re.findall(r"[\w]+, [0-9][0-9]\. [\w]+ [0-9]+", date): self.date = datetime.datetime.strptime(date.strip().encode("utf-8"), '%A,

我有以下DateTime和字符串编码相关问题:

我想从字符串“Freitag,03.März 2017”中解析一个日期。为此,我使用以下代码行:

locale.setlocale(locale.LC_ALL, "de_DE")

if re.findall(r"[\w]+, [0-9][0-9]\. [\w]+ [0-9]+", date):
   self.date = datetime.datetime.strptime(date.strip().encode("utf-8"), '%A, %d. %B %Y').date()

else:
   formattedDate = ', 0'.join(date.split(", ")).encode("utf-8")
   self.date = datetime.datetime.strptime(formattedDate.strip(), '%A, %d. %B %Y').date()
这在我的机器上运行良好(macOS,系统语言为德语),但在运行此代码的OpenShift实例上崩溃:

self.date = datetime.datetime.strptime(formattedDate.strip(), '%A, %d. %B %Y').date()
File "/opt/rh/python27/root/usr/lib64/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data 'Freitag, 03. M\xc3\xa4rz 2017' does not match format '%A, %d. %B %Y'

我无法尝试这一点,因此无法判断它是否除了避开设置语言环境的问题之外还有其他作用,如果它确实这样做的话。但巴贝尔似乎使用自己的代码来处理语言环境

>>> from babel.dates import format_date, format_datetime, format_time, get_month_names
>>> import re
>>> re.search(r'(\d\d)\. ([\w]+) (\d{4})',  "Freitag, 03. März 2017").groups()[1]
'März'
>>> months = [get_month_names(width='wide',context='stand-alone', locale='de_DE')[m] for m in range(1,13)]
>>> months
['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
>>> months.index('März')
2

几乎可以肯定您没有在OpenShift服务器上安装de_de locale。@felipsmartins,嗯,这不会也中断解析任何其他德语日期吗?其他几个月的工作表明这确实是一种编码issue@rodalfus如果您的服务器不支持UTF-8编码,请选择RIP