python - dateutil / 解析器中的语言环境

f0r*_*d42 6 python python-dateutil

我设置

locale.setlocale(locale.LC_TIME, ('de', 'UTF-8'))
Run Code Online (Sandbox Code Playgroud)

要解析的字符串是:

Montag, 11. April 2016 19:35:57
Run Code Online (Sandbox Code Playgroud)

我用:

note_date = parser.parse(result.group(2))
Run Code Online (Sandbox Code Playgroud)

但得到以下错误:

回溯(最近一次调用):文件“/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py”,第 1531 行,在 globals = debugger.run(setup['file'], None, None, is_module ) File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 938, in run pydev_imports.execfile(file, globals, locals) # 执行脚本 File "/Applications/PyCharm.app/Contents /helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "/Users/adieball/Dropbox/Multiverse/Programming /python/repositories/kindle/kindle2en.py", line 250, in main(sys.argv[1:]) 文件 "/Users/adieball/Dropbox/Multiverse/Programming/python/repositories/kindle/kindle2en.py",第 154 行,在主要 note_date = parser.parse(result.group(2)) 文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/dateutil/parser.py”,第 1164 行,在解析中返回 DEFAULTPARSER.parse(timestr, **kwargs) 文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/dateutil/parser.py”,第 555 行,在解析中raise ValueError("Unknown string format") ValueError: Unknown string format在解析引发 ValueError("Unknown string format") ValueError: Unknown string format在解析引发 ValueError("Unknown string format") ValueError: Unknown string format

调试显示解析器没有使用“正确”的 dateutil 值(德语),它仍在使用英文值。

在此处输入图片说明

我确定我在这里遗漏了一些明显的东西,但找不到。

谢谢。

Sim*_*ser 5

dateutil.parser不使用locale. 您需要子类化dateutil.parser.parserinfo并构造一个德语等效项:。

from dateutil import parser

class GermanParserInfo(parser.parserinfo):
    WEEKDAYS = [("Mo.", "Montag"),
                ("Di.", "Dienstag"),
                ("Mi.", "Mittwoch"),
                ("Do.", "Donnerstag"),
                ("Fr.", "Freitag"),
                ("Sa.", "Samstag"),
                ("So.", "Sonntag")]

s = 'Montag, 11. April 2016 19:35:57'
note_date = parser.parse(s, parserinfo=GermanParserInfo())
Run Code Online (Sandbox Code Playgroud)

您需要扩展它以使其也适用于其他值,例如月份名称。