该评论正在导致错误。我有一个contents.json文件,它看起来像:
{
"Fridge": [
["apples"],
["chips","cake","10"] // This comment here is causing error
],
"car": [
["engine","tires","fuel"],
]
}我的python脚本是这样的
import json
jsonfile = open('contents.json','r')
jsondata = jsonfile.read()
objec = json.loads(jsondata)
list_o = objec['Fridge']
for i in (list_o):
print(i)在我的list_o中,我试图从JSON文件加载Fridge,当JSON文件有这个注释时,它会给我一个错误,当JSON文件没有注释时,脚本就会正常运行。
我知道注释不是正确的JSON格式,但是有什么方法可以忽略JSON文件的注释吗?
发布于 2021-09-02 00:55:11
按行读取文件并删除注释部分。
import json
jsondata = ""
with open('contents.json', 'r') as jsonfile:
for line in jsonfile:
jsondata += line.split("//")[0]
objec = json.loads(jsondata)
list_o = objec['Fridge']
for i in (list_o):
print(i)['apples']
['chips', 'cake', '10']更新
您也可以轻松地使用诸如解说这样的库。只需替换:
objec = json.loads(jsondata)至
import commentjson # python3 -m pip install commentjson
objec = commentjson.loads(jsondata)发布于 2021-09-02 02:47:30
@NielGodfreyPonciano的答案在大多数情况下是可行的,但如果//是字符串的一部分,则会失败。
对于更健壮的解决方案,您可以将其解析为JSON5 (支持注释的一组JSON超集),并使用pyjson5模块:
import json5
data = '''{
"Fridge": [
["apples"],
["chips","cake","10"] // This comment here is causing error
],
"car": [
["engine","tires","fuel"],
]
}'''
print(json5.loads(data))这一产出如下:
{'Fridge': [['apples'], ['chips', 'cake', '10']], 'car': [['engine', 'tires', 'fuel']]}发布于 2022-03-18 20:41:32
按照@blhsing's和@NielGodfreyPonciano的答案,您也可以通过使用regular expressions内置模块来实现这一点。
import re
import json
with open("contents.json", "r") as JSONfile:
objec = json.loads("".join(re.split(r"(?://|#).*(?=\n)", JSONfile.read())).strip())https://stackoverflow.com/questions/69021815
复制相似问题