在Python中讀取JSON文件:ValueE

2024-05-10 18:04:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.txt文件,其中包含70+k个json对象,通过从twitter提取数据并转储到文件中,使用:

with open("followers.txt", 'a') as f:
     for follower in limit_handled(tweepy.Cursor(api.followers, screen_name=account_name).pages()):
         for user_obj in follower:
             json.dump(user_obj._json, f)  
             f.write("\n")  

当我尝试使用以下代码在python中阅读本文时:

^{pr2}$

我得到错误:

ValueError: Extra data: line 2 column 1 - line 2801 column 1 (char 1489 - 8679498)

当我使用上面相同的代码从原始文件复制了一个json对象的测试文件时,它就起作用了。一旦我在这个文件中添加了第二个json对象,那么使用上面相同的代码会出现错误:

ValueError: Extra data: line 2 column 1 - line 2 column 2376 (char 1489 - 3864)

如何读取包含多个json对象的文件?在


Tags: 文件对象代码nameintxtjsonobj
2条回答

当然,最好从根开始处理问题:编写一个json并读取它,正如COLDSPEED所建议的那样。
但是,如果已经将多个json对象写入一个文件中,则可以尝试以下代码来使用已创建的文件:

import json
follower_data = []  # a list of all objects
with open('followers.txt') as json_data:
  for line in json_data:
    follower_data.append( json.loads(line) ) 

假设您在将json对象写入'flowers.txt'时没有缩进,那么文件中的每一行都是一个可以独立解析的json对象。在

当您编写JSON时,问题就出现了。您必须编写一个JSON对象,因此也可以加载一个JSON对象。当前,您正在编写多个单独的对象,导致错误。在

稍微修改一下您的编写代码:

json_data = []
with open("followers.txt", 'a') as f:
     for follower in limit_handled(tweepy.Cursor(api.followers, screen_name=account_name).pages()):
         for user_obj in follower:
             json_data.append(user_obj._json)             

     # outside the loops
     json.dump(json_data, f)  

现在,在阅读时,您现有的代码应该可以工作了。你会得到一份字典的清单。在

相关问题 更多 >