处理我的JSON文件时Python有什么问题?
我尝试使用python从json文件中删除第一个键和值。在运行程序时,我遇到了一个错误,如下所述:处理我的JSON文件时Python有什么问题?,python,json,Python,Json,我尝试使用python从json文件中删除第一个键和值。在运行程序时,我遇到了一个错误,如下所述: import json with open('testing') as json_data: data = json.load(json_data) for element in data: del element['url'] 错误: Traceback (most recent call last): File "p.py", line 3, in <
import json
with open('testing') as json_data:
data = json.load(json_data)
for element in data:
del element['url']
错误:
Traceback (most recent call last):
File "p.py", line 3, in <module>
data = json.load(json_data)
File "/usr/lib/python3.5/json/__init__.py", line 268, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 180)
我不知道为什么会出现这个问题?json\u数据是文件的实例,而不是内容。因此,首先对实例应用read()以获取数据。第二,如果您正在读取JSON文件,请写入完整的文件名。您的文件应该是testing.json。第三,指定文件打开模式。您可以使用此代码
导入json
使用open('testing.json','r')作为json_数据:
data=json.load(json_data.read())
对于数据中的元素:
del元素['url']
您必须逐行读取文件,因为它是一行行的json
数据,而不是有效的json
结构
这是我的逐行建议
import json
data = []
with open('testing') as f:
for json_data in f:
element = json.loads(json_data) # load from current line as string
del element['url']
data.append(element)
在这种情况下,有效的json是:
[{"url":"example.com","original_url":"http://example.com","text":"blah...blah"...},
{"url":"example1.com","original_url":"http://example1.com","text":"blah...blah"...}]
根据我的评论,输入文件不是有效的JSON 这个答案告诉您如何成功地读取这样一个文件,该文件由有效JSON实体的串联组成,而不是一个此类实体的JSON列表
如果且仅当您可以依赖文件的行结构时,另一种选择是逐行读取并分别解码每行。我们需要查看
测试
文件,或者如果文件太大,至少是开始和结束。@Jean-Françoisfare是的,让我编辑输入请按原样发布文件中的第1-3行。从错误消息中,我怀疑这就是发现错误的地方。:)Pythonjson
模块对json的解释非常严格。通常的问题是,无论从何处获取所谓的JSON,都不会生成严格有效的JSON。常见的错误是{…}{…}
或{…},{…}
而不是有效的dict列表[{…},{…}]
.Snap!我猜对了,你就在我发表评论的时候发布了确认信息!
[{"url":"example.com","original_url":"http://example.com","text":"blah...blah"...},
{"url":"example1.com","original_url":"http://example1.com","text":"blah...blah"...}]