gpt4 book ai didi

Python strptime 芬兰语

转载 作者:行者123 更新时间:2023-12-01 04:23:47 27 4
gpt4 key购买 nike

我有一个芬兰语日期表示形式 (tiistaina, 27. lokakuuta 2015),我需要将其转换为日期时间对象。但是,Python 中的日期时间库无法识别日期和月份名称

我希望像下面这样的东西能够工作:

import locale
from datetime import datetime

locale.setlocale(locale.LC_TIME, 'fi_FI')
the_date = datetime.strptime('tiistaina, 27. lokakuuta 2015', '%A, %d. %B %Y')

但是,这会导致:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data 'tiistaina, 27. lokakuuta 2015' does not match format '%A, %d. %B %Y'

我认为这是因为Python预计日期是tiistai而不是tiistaina,月份是lokakuu而不是lokakuuna

http://people.uta.fi/~km56049/finnish/timexp.html似乎表明,根据上下文,芬兰语有不同的方式来表示一天或一个月。

如何将字符串 tiistaina, 27. lokakuuta 2015 转换为日期时间对象?

最佳答案

'%A,%d。 %B %Y' 在我的系统上也会产生不同的时间字符串:

#!/usr/bin/env python
import locale
from datetime import datetime

#NOTE: locale name is platform-dependent
locale.setlocale(locale.LC_TIME, 'fi_FI.UTF-8')
print(datetime(2015, 10, 27).strftime('%A, %d. %B %Y'))
# -> tiistai, 27. lokakuu 2015
<小时/>

您可以使用PyICU解析 given format 中的本地化日期/时间字符串:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import datetime
import icu # PyICU

tz = icu.ICUtzinfo.getDefault() # any ICU timezone will do here
df = icu.SimpleDateFormat('EEEE, dd. MMMM yyyy', icu.Locale('fi_FI'))
df.setTimeZone(tz.timezone)

ts = df.parse(u'tiistaina, 27. lokakuuta 2015')
print(datetime.fromtimestamp(ts, tz).date())
# -> 2015-10-27

相关:Python parsing date and find the correct locale_setting

它可以工作,但 PyICU 是一个很大的依赖项,大多数事情你都必须阅读 C++ 文档。

<小时/>

dateparser module如果你 add Finnish data to a simple yaml config -- similar to how it is done for other languages 应该可以工作。这是荷兰语的一个工作示例:

#!/usr/bin/env python
import dateparser # $ pip install dateparser

print(dateparser.parse(u'dinsdag, 27. oktober 2015',
date_formats=['%A, %d. %B %Y'],
languages=['nl']).date())
# -> 2015-10-27

相关:Parse French date in python

关于Python strptime 芬兰语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com