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