【问题标题】:Converting russian string to datetime将俄语字符串转换为日期时间
【发布时间】:2016-01-20 10:41:15
【问题描述】:

我正在尝试抓取一个俄罗斯网站。但是我坚持尝试将俄语西里尔字母转换为 DateTime 对象。

我们以这段 html 片段为例:

<div class="medium-events-list_datetime">22 января весь день</div>

我可以使用 lxml 获取这个 div 的内容,即:

date = root.xpath('/html/body/div[1]/div/div[2]/text()')[0].strip()

所以这个字符串的相关部分是 22 января,即日和月。

为了获得这部分,我使用.split() 方法

现在问题出在这里,我正在尝试将其转换为 DateTime。 我尝试使用 DateParser:https://dateparser.readthedocs.org/en/latest/ ,应该支持俄语。

但是,当我将此字符串传递给 dateparser.parse() 时,它会返回 None

有没有人遇到过类似的问题?我正在用头撞墙。任何帮助表示赞赏:)

【问题讨论】:

    标签: python-2.7 datetime encoding lxml non-latin


    【解决方案1】:

    尝试运行此示例:

    #coding=utf-8
    import dateparser
    s = u"22 января"
    print dateparser.parse(s)
    

    应该输出2016-01-22 00:00:00

    重要提示:确保您实际使用的是 utf-8 字符串。更多信息:https://www.python.org/dev/peps/pep-0263/

    否则你的解析/拆分可能是错误的,所以请尝试查看split()之后的结果。

    【讨论】:

    • 问题是我想传递给 dateparser.parse() 无论从 date = root.xpath('/html/body/div[1]/div/div[2]/ 返回text()')[0].strip() - 它返回 unicode,在 .split() 之后它也是 unicode,但是 dateparser 仍然返回 None。当我声明 unicode 文字并将其传递给 dateparser 时,它可以工作。
    • 也许您可以在上面的帖子中添加更多代码,以显示您如何将split() 的结果传递给dateparser。也许还添加一些中间打印以显示您的值。请注意,例如 split() 返回一个字符串列表,而不仅仅是一个字符串。
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2017-08-04
    • 2022-08-18
    • 2017-08-31
    相关资源
    最近更新 更多