python dateutil unicode警告

时间:2014-01-22 23:41:49

标签: python twitter unicode python-dateutil

我使用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.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不是??

2 个答案:

答案 0 :(得分:5)

这是dateutil中的一个未解决的错误(从2.2版开始),只发生在Windows上:https://bugs.launchpad.net/dateutil/+bug/1227221

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

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

import warnings
warnings.filterwarnings("ignore", category=UnicodeWarning)

答案 1 :(得分:3)

问题发出后仅18个月,答案结束后15个月,我们可能已经解决了这个问题:https://github.com/dateutil/dateutil/issues/92 因此,当前的解决方案是升级到dateutil或任何版本>=2.5.0

的开发版本