Python 如何解析文本的某一部分,并将其余部分转储到json文件中

Python 如何解析文本的某一部分,并将其余部分转储到json文件中,python,parsing,Python,Parsing,我将shell命令的结果作为字符串。我想解析字符串,以便将dictionary对象单独保存在json文件中 s = "output/directory/366d595b-23b2-435d-8dc6-698b3d0844b9/result.csv scores=[{ "base_score": 0.92, "metric": "ACCURACY" }] 我尝试了下面的方法在“=”之后进行解析,但我不确定这是否可靠 i = iter(s) a = '-'.join(itert

我将shell命令的结果作为字符串。我想解析字符串,以便将dictionary对象单独保存在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)

您可以尝试以下方法:

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)

这将拆分
=
上的字符串,然后解析第二个元素

您可以尝试以下方法:

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)

这将拆分
=
上的字符串,然后解析第二个元素

这可以通过正则表达式完成

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)

正则表达式与所描述的类似。

这可以通过正则表达式完成

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)

正则表达式与前面描述的类似。

可以正确设置字符串的格式吗?可以正确设置字符串的格式吗?谢谢。如果字符串是列表中的对象,如何修改正则表达式。所以没有引用。它是否变成dict_txt=re.search([([^]]),s.group(1).strip(),我不知道你说的字符串是列表中的对象是什么意思?正则表达式只返回方括号中的所有内容。我建议使用在线测试仪来理解和检查您的正则表达式。谢谢你。如果字符串是列表中的对象,如何修改正则表达式。所以没有引用。它是否变成dict_txt=re.search([([^]]),s.group(1).strip(),我不知道你说的字符串是列表中的对象是什么意思?正则表达式只返回方括号中的所有内容。我建议使用在线测试仪来理解和检查您的正则表达式。例如。