【问题标题】:Getting error parsing date string in Russian language in python 3在python 3中获取错误解析俄语日期字符串
【发布时间】:2017-04-07 08:52:17
【问题描述】:

我正在尝试在 python 3 中将日期字符串转换为日期对象,如下所示:

from datetime import datetime
import locale

date_string = "Добавлено: суббота, 26 декабря 2015 г. в 11:01:59"
locale.setlocale(locale.LC_TIME, "rus")
ru_date_object = datetime.strptime(date_string , 'Добавлено: %A, %d %B %Y г. в %H:%M:%S')
print(ru_date_object)

执行上述代码时出现以下错误:

Traceback(最近一次调用最后一次): 文件“F:\Users***\Desktop\DateParser\20 nov.py”,第 54 行,在 ruDate = datetime.strptime(dateStr6, '\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e: %A, %d %B %Y \u0433. \u0432 %H:%M:%S ') _strptime_datetime 中的文件“F:\Users***\AppData\Local\Programs\Python\Python35-32\lib_strptime.py”,第 510 行 tt, 分数 = _strptime(data_string, 格式) 文件“F:\Users***\AppData\Local\Programs\Python\Python35-32\lib_strptime.py”,第 343 行,在 _strptime (数据字符串,格式)) ValueError: 时间数据 '\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e: \u0441\u0443\u0431\u0431\u043e\u0442\u0430, 26 \u0434\u04035u04\u043a\ \u0440\u044f 2015 \u0433。 \u0432 11:01:59' 不匹配格式 '\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e: %A, %d %B %Y \u0433。 \u0432 %H:%M:%S'

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    问题在于单词'декабря',它不是主格。要将此字符串解析为日期,您应该将“декабря”替换为“декабрь”。你可以这样做:

    from datetime import datetime
    import locale
    
    date_string = "Добавлено: суббота, 26 декабря 2015 г. в 11:01:59"
    locale.setlocale(locale.LC_TIME, "rus")
    d = {'января': 'январь', 'декабря': 'декабрь'}
    for k, v in d.items():
        date_string = date_string.replace(k, v)
    ru_date_object = datetime.strptime(date_string , 'Добавлено: %A, %d %B %Y г. в %H:%M:%S')
    print(ru_date_object)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      相关资源
      最近更新 更多