Как разобрать до определенной части текста и сбросить оставшуюся часть в файл JSON - PullRequest
0 голосов
/ 29 января 2019

У меня есть результат команды оболочки в виде строки.Я хочу разобрать строку, чтобы один объект словаря был сохранен в файле 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)

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Это можно сделать с помощью регулярного выражения.

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)

Регулярное выражение аналогично описанному здесь .

0 голосов
/ 29 января 2019

Вы можете попробовать что-то вроде этого:

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)

Это разделит строку на = и затем проанализирует второй элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...