我收到的格式如下:
// 20170407
// http://info.employeeportal.org
{
"EmployeeDataList": [
{
"EmployeeCode": "200005ABH9",
"Skill": CT70,
"Sales": 0.0,
"LostSales": 1010.4
}
]
}
需要删除文件中存在的额外注释行。
我尝试使用以下代码:
import json
import commentjson
with open('EmployeeDataList.json') as json_data:
employee_data = json.load(json_data)
'''employee_data = json.dump(json.load(json_data))'''
'''employee_data = commentjson.load(json_data)'''
print(employee_data)`
仍然无法从文件中删除评论并带来 正确格式的JSON文件。
没有出错的地方?在这方面的任何方向都非常感谢。谢谢提前
答案 0 :(得分:4)
您没有正确使用json
。它与import commentjson
with open('EmployeeDataList.json', 'r') as handle:
employee_data = commentjson.load(handle)
print(employee_data)
模块具有相同的接口:
import json
with open('EmployeeDataList.json', 'r') as handle:
fixed_json = ''.join(line for line in handle if not line.startswith('//'))
employee_data = json.loads(fixed_json)
print(employee_data)
虽然在这种情况下,您的评论很简单,您可能不需要安装额外的模块来删除它们:
json.loads
请注意,两个代码段之间的区别在于使用json.load
而不是bind 0.0.0.0:443 ssl crt /etc/ssl/cert.pem no-sslv3 ciphers AES128+EECDH:AES128+EDH
,因为您正在解析字符串而不是文件对象。
答案 1 :(得分:1)
尝试JSON-minify:
JSON-minify通过删除所有空格和JS样式的注释(单行//和多行/ * .. * /)将类似JSON的内容块缩小为有效的JSON。
答案 2 :(得分:1)
我通常将JSON读作普通文件,删除注释然后将其解析为JSON字符串。可以使用以下代码段在一行中完成:
with open(path,'r') as f: jsonDict = json.loads('\n'.join([row for row in f.readlines() if len(row.split('//')) == 1]))
恕我直言,它非常方便,因为它不需要CommentJSON或任何其他非标准库。
答案 3 :(得分:0)
如果每次都可以使用相同数量的行:
fh = open('EmployeeDataList.NOTjson',"r")
rawText = fh.read()
json_data = rawText[rawText.index("\n",3)+1:]
这样json_data现在是没有前3行的文本字符串。
答案 4 :(得分:0)
那不是有效的json
格式,所以只需像打开文本文档一样打开它,然后删除从//
到\n
的任何内容。
with open("EmployeeDataList.json", "r") as rf:
with open("output.json", "w") as wf:
for line in rf.readlines():
if line[0:2] == "//"
continue
wf.write(line)
答案 5 :(得分:0)
您的文件可以解析using HOCON。
pip install pyhocon
>>> from pyhocon import ConfigFactory
>>> conf = ConfigFactory.parse_file('data.txt')
>>> conf
ConfigTree([('EmployeeDataList',
[ConfigTree([('EmployeeCode', '200005ABH9'),
('Skill', 'CT70'),
('Sales', 0.0),
('LostSales', 1010.4)])])])