6

たとえば、ドイツ語の日付があります。

2. Okt. 2009

そしておそらくとして

2. Oct. 2009

これをISO日時(またはPython)に変換するにはどうすればよいdatetimeですか?

このスニペットを使用して解決:

for l in locale.locale_alias:
    worked = False
    try:
        locale.setlocale(locale.LC_TIME, l)
        worked = True
    except:
        worked = False
    if worked: print l

次に、パラメータlに適切なものをプラグインしますsetlocale

を使用して解析できます

import datetime
print datetime.datetime.strptime("09. Okt. 2009", "%d. %b. %Y")
4

2 に答える 2

11

http://docs.python.org/library/locale.html

datetimeモジュールはすでにロケールに対応しています。

次のようなものです

# German locale
loc = locale.setlocale(locale.LC_TIME, ("de","de"))
try:
     date = datetime.date.strptime(input, "%d. %b. %Y")
except:
     # English locale
     loc = locale.setlocale(locale.LC_TIME, ("en","us"))
     date = datetime.date.strptime(input, "%d. %b. %Y")
        
于 2009-08-19T11:40:23.320 に答える
3

コード スニペットに関する非常に些細な点: 私は Python の専門家ではありませんが、「成功を確認するためのフラグ + すべての例外を静かに飲み込む」全体が悪いスタイルだと考えています。

try/expect/elseあなたが望むことをよりクリーンな方法で行います、私は思います:

for l in locale.locale_alias:
    try:
        locale.setlocale(locale.LC_TIME, l)
    except locale.Error: # the doc says setlocale should throw this on failure
        pass
    else:
        print l
于 2009-08-19T14:16:26.437 に答える