我正在使用Python工具检索Twitter数据,并将其以JSON格式转储到磁盘中。我注意到一条推文用双引号引起了整个数据字符串的意外转义。此外,实际JSON格式的所有双引号都以反斜杠转义。
他们看起来像这样:
“ {\” created_at \“:\”周五8月8日11:04:40 +0000 2014 \“,\” id \“:497699913925292032,
如何避免这种情况?它应该是:
{“ created_at”:“ 2014年8月8日星期五11:04:40 +0000” .....
我的文件输出代码如下所示:
with io.open('data'+self.timestamp+'.txt', 'a', encoding='utf-8') as f: f.write(unicode(json.dumps(data, ensure_ascii=False))) f.write(unicode('\n'))
在以后的处理步骤中读取JSON文件时,意外的转义会导致问题。
您正在对JSON字符串进行双重编码。data是 已经 JSON字符串,并且不需要进行编码 再次 :
data
>>> import json >>> not_encoded = {"created_at":"Fri Aug 08 11:04:40 +0000 2014"} >>> encoded_data = json.dumps(not_encoded) >>> print encoded_data {"created_at": "Fri Aug 08 11:04:40 +0000 2014"} >>> double_encode = json.dumps(encoded_data) >>> print double_encode "{\"created_at\": \"Fri Aug 08 11:04:40 +0000 2014\"}"
只需将这些直接写入您的文件即可:
with open('data{}.txt'.format(self.timestamp), 'a') as f: f.write(data + '\n')