python dateutil unicode警告
我正在使用sixohsix库解析来自Twitter API的一些推特数据。我正在尝试将tweet的日期转换为我的区域设置:python dateutil unicode警告,python,twitter,unicode,python-dateutil,Python,Twitter,Unicode,Python Dateutil,我正在使用sixohsix库解析来自Twitter API的一些推特数据。我正在尝试将tweet的日期转换为我的区域设置: from pytz import timezone from dateutil import parser timestamp = parser.parse(tweet["created_at"]) timestamp_arg = timestamp.astimezone(timezone('America/Buenos_Aires')) 我收到一个unicode警告:
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())
但一切都没有改变
除了警告之外,似乎什么也没有打破。
有人知道为什么会发生这种情况,以及如何解决它吗
谢谢
更新:
我也尝试过同样的例子,但硬编码的时间字符串和工作没有警告。另外,根据警告消息,在执行以下操作时,问题似乎发生在parse调用中parser.py:339
res.tzname in time.tzname
可能是因为res是unicode而time.tzname不是???这是dateutil(从版本2.2开始)中未解决的错误,仅在Windows上出现: Dateutil仍将正常运行,除非您尝试使用非ascii字符解析时区。我想这很不寻常,所以你应该没事 最简单的解决方法可能只是消除错误
import warnings
warnings.filterwarnings("ignore", category=UnicodeWarning)
在提出问题18个月后和回答问题15个月后,我们可能已经解决了此错误:
因此,当前的解决方案是升级到
dateutil
的开发版本或>=2.5.0
的任何版本。您可以发布整个堆栈跟踪吗?哪一行失败了?此外,您得到的错误可能表明使用u'America/BuenosúAires'
在结尾处encode()
不太可能有任何帮助,因为警告显然已经在您走到这一步之前发生了。一般来说,在没有编码的东西上调用str
或unicode
是一个非常糟糕的主意,尤其是来自互联网的东西,因此可能会使用与系统默认编码不同的编码。此外,如果您问到有关第三方库(如dateutil
)的问题,这个版本通常值得一提。尤其是最近移植到dual-2.x/3.x兼容代码的库,很容易在第二天修复的版本中出现错误。因此@goncalopp不确定如何做到这一点,因为没有异常或“崩溃”,只是警告和脚本一直在运行。dateutil版本是2.2(今天安装)。您好。这个错误仍然存在于windows上,dateutil版本是v2.5.3。v2.6.0仍然抛出Unicoderning。。。。elif res.tzname和res.tzname in time.tzname