使用 csv 或 json 处理 python twitter api 数据

Posted

技术标签:

【中文标题】使用 csv 或 json 处理 python twitter api 数据【英文标题】:Handling the python twitter api data with either csv or json 【发布时间】:2017-01-23 01:18:59 【问题描述】:

我正在流式传输数据,并且正在将数据保存到这样的 json 文件中

 with open('filename.json', 'a') as f:
    f.write(data)

现在我想读取数据以进行进一步分析。要在另一个程序中简单地使用 json 文件,我能做的最简单的事情是。

import json
with open('D:\Devotion of time\Data\paralympics.json') as f:
data= json.load(f) 
or 
data= json.loads(f.read())

在这两种情况下,我都会收到以下错误:-

c:\python27\lib\json\__init__.pyc in load(fp, encoding, cls, object_hook,                      
parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
276         parse_float=parse_float, parse_int=parse_int,
277         parse_constant=parse_constant,                                         
object_pairs_hook=object_pairs_hook,
278         **kw)
279 
280 

c:\python27\lib\json\__init__.pyc in loads(s, encoding, cls, object_hook,    
parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
324             parse_int is None and parse_float is None and
325             parse_constant is None and object_pairs_hook is None and not 
 kw):
326         return _default_decoder.decode(s)
327     if cls is None:
328         cls = JSONDecoder

c:\python27\lib\json\decoder.pyc in decode(self, s, _w)
367         end = _w(s, end).end()
368         if end != len(s):
369             raise ValueError(errmsg("Extra data", s, end, len(s)))
370         return obj
371 

ValueError: Extra data: line 3 column 1 - line 107 column 1 (char 13127 - 394133)

如果我要切换到其他类似的东西

data = []
with open('file') as f:
for line in f:
    data.append(json.loads(line))

然后我得到 AttributeError: 'str' object has no attribute 'read' 有时也 ValueError: No JSON object could be decoded

我搜索了解决方案,但没有任何帮助。 我也尝试用 Pandas (pd.read_json()) 阅读它,但同样的问题。

*我想要对数据做的,是变成一个 csv 文件,或者如果它是 json ,所以试着以某种方式轻松使用它。数据看起来像this

那么如何处理呢?我应该更改程序还是其他?或者任何更好的处理推特数据的建议。*

使用 Python27、win10、tweepy。

【问题讨论】:

【参考方案1】:

您的文件不包含单个 JSON 对象,而是每行中包含多个 JSON 对象。您可以按如下方式解析每一行:

with open('t.txt', 'r') as f:
    res = []
    for line in f:
        if line.strip() != '':  # The sample file also has empty lines
            res.append(json.loads(line))

【讨论】:

以上是关于使用 csv 或 json 处理 python twitter api 数据的主要内容,如果未能解决你的问题,请参考以下文章

python中列表中的JSON或CSV

使用 shell 或批处理命令行将 Python Pretty 表转换为 CSV

Python MySQL CSV 导出到 json 奇怪的编码

嵌套的json嵌入到csv python的列中

如何将 CSV 或 JSON 导入到 Firebase Cloud Firestore

一文综述python读写csv xml json文件各种骚操作