我将shell命令的结果作为字符串。我想解析字符串,以便仅将字典对象保存在json文件中。
s = "output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[{
"base_score": 0.92,
"metric": "ACCURACY"
}]
我尝试使用下面的方法在“ =”之后进行解析,但是我不确定它是否可靠。
i = iter(s)
a = '-'.join(itertools.takewhile(lambda x: x != '=', i))
print(a)
with open('data.txt', 'w') as outfile:
json.dumps(data, outfile)
json.dumps(a, indent=4)
答案 0 :(得分:2)
您可以尝试这样的事情:
import json
s = '''output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[
{
"base_score": 0.92,
"metric": "ACCURACY"
}]'''
data = json.loads(s.split('=')[1])
print(data)
with open('result.json', 'w') as fp:
json.dump(data, fp)
这将拆分=
上的字符串,然后解析第二个元素。
答案 1 :(得分:1)
这可以用正则表达式完成。
import json
import re
s = '''output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[
{
"base_score": 0.92,
"metric": "ACCURACY"
}]'''
import json
import re
dict_txt = re.search('\[([^]]+)', s).group(1).strip()
data = json.loads(dict_txt)
print(data)
正则表达式类似于描述的here。