6

我正在使用 Sixohsix 库从 Twitter API 解析一些推文的数据。我试图将推文的日期转换为我的语言环境:

from pytz import timezone
from dateutil import parser

timestamp = parser.parse(tweet["created_at"])
timestamp_arg = timestamp.astimezone(timezone('America/Buenos_Aires'))

我收到一个 unicode 警告:

dateutil\parser.py:339: UnicodeWarning: Unicode 相等比较未能将两个参数转换为 Unicode - 将它们解释为不相等 elif res.tzname 和 res.tzname 在 time.tzname 中:

我试过做

parser.parse(str(tweet["created_at"]))
parser.parse(unicode(tweet["created_at"]).encode())

但没有任何改变。

除了警告之外,似乎没有任何问题。有谁知道为什么会发生这种情况,以及如何解决?

谢谢!

更新:

我尝试了相同的示例,但将时间硬编码为字符串,并且在没有警告的情况下工作。同样根据警告消息,问题似乎发生在解析调用中,在parser.py:339

res.tzname in time.tzname

也许是因为 res 是 unicode 而 time.tzname 不是?

4

2 回答 2

5

这是 dateutil(截至 2.2 版)中未解决的错误,仅在 Windows 上发生:https ://bugs.launchpad.net/dateutil/+bug/1227221

除非您尝试使用非 ascii 字符解析时区,否则 Dateutil 仍将正常运行。我认为这是非常不寻常的,所以你应该没问题。

最简单的解决方法可能只是消除错误。

import warnings
warnings.filterwarnings("ignore", category=UnicodeWarning)
于 2014-05-03T22:38:05.480 回答
3

问题后18个月和回答后15个月,我们大概已经解决了这个bug:https ://github.com/dateutil/dateutil/issues/92 所以目前的解决方案是升级到开发版dateutil或者任意版本>=2.5.0

于 2015-08-02T17:38:55.137 回答