我有大约500个json文件,其中包含注释。尝试使用新值更新json文件上的字段会引发错误。我设法使用commentjson删除了如下字符串//一些文本和json文件更新,并且没有抛出任何错误
但是大约有100个json文件有这样的注释:
/*
1. sometext.
i. sometext
ii. sometext
2. sometext
*/
当/*存在时,Commentjson就会崩溃。如果我删除/*并运行代码,它将工作并更新并删除任何//。 如何编写一些代码来管理/*和/**/之间的所有文本
这是我当前可以删除//的代码
with open(f"{i['Location']}\\{file_name}",'r') as f:
json_info = commentjson.load(f) #Gets info from the json file
json_info['password'] = password
with open(f"{i['location_Daily']}\\{file_name}",'w') as f:
commentjson.dump(json_info,f,indent = 4) #updates the password
print("updated")
您可以使用另一个库,如json5或pyjson5,或任何支持JSON5的库
输出
您有几个选择:
将整个文件读入字符串,然后使用正则表达式预处理文本。例如:
请注意,如果JSON字符串中还有
/*
和*/
两个字符,那么这种方法将不起作用。正则表达式不是JSON解析器尝试更新
commonjson
项目用于解析JSON的解析器。看一下the project source code,他们使用了Lark parsing library,因此您可以使用附加语法对模块进行修补我注意到主分支已经有了定义多行注释的语法规则:
但这还不是他们释放的一部分。但是,您可以重复使用该规则:
我在语法更新中使用了自己的正则表达式,而不是项目使用的版本
查找其他库以解析输入。有几个选项声称支持使用相同语法解析JSON:
我没有尝试过这些,也没有对它们的可用性或性能发表任何意见
相关问题 更多 >
编程相关推荐