【发布时间】:2014-02-13 07:27:10
【问题描述】:
我正在使用 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 不是??
【问题讨论】:
-
你能发布整个堆栈跟踪吗?哪条线路出现故障?
-
另外,您遇到的错误可能建议使用
u'America/Buenos_Aires' -
最后的
encode()不太可能有任何帮助,因为警告显然在你到达那一步之前已经发生了。通常,仅在没有编码的情况下调用str或unicode是一个非常糟糕的主意,尤其是来自互联网的内容,因此可能具有与系统默认编码不同的编码。 -
另外,如果您要问关于像
dateutil这样的第三方库的问题,通常值得一提的是版本。特别是对于最近才移植到双 2.x/3.x 兼容代码的库,并且很容易在您拥有的版本中出现错误,第二天就修复了。 -
所以@goncalopp 不知道该怎么做,因为没有例外或“崩溃”,只是警告和脚本继续运行。 dateutil 版本是 2.2(今天安装)。
标签: python twitter unicode python-dateutil