Чтение указанного c содержимого из текстового файла, который выглядит как json с использованием python - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь прочитать данные из текстового файла, который выглядит как json или вложенные словари. Я пробовал несколько подходов, в некоторых строках отсутствуют кавычки. Я попытался добавить кавычки и импортировать как файл json, но это не сработало. Мне нужно импортировать текстовый файл, прочитать значение «b» и «TYPE» и вставить его в 2 столбца, columnA (значение TYPE) и columnB (значение «b») из каждой части, то есть от PART1 до PART300, я вставил часть txt. файл ниже

Я также пытался преобразовать этот текстовый файл как словари для чтения как ключ, значение, но это не удалось. Я потратил на это несколько дней, пожалуйста, помогите

Part1 :  
    {
        PartA :
        {
            PartA1 :
            {
                a: 1
                b : 5
                c: -115
                d : -73
                e : 1
                f : -14
                g : -40
                h : 0
                i : "300"
                TYPE : "A1”
                     }
            PartB2 :
            {
                a: 1
                b : 4
                c: -1
                d : -7
                e : 1
                f : -17
                g : -40
                h : 0
                i : "302"
                TYPE : "A2”
                     }
Part2 :
    {
        PartB :
        {
            PartB1 :
            {
                a: 1
                b : 3
                c: -115
                d : -73
                e : 1
                f : -130
                g : -40
                h : 0
                i : "300"
                TYPE : "B1”
                     }

Код:

import re
filepath='sample.txt'
with open(filepath, "r") as textfile:
    with open(filepath + "_output.txt", "a") as output:
         for line in textfile:
             if re.search("b :", line):
                    output.write(line)
             elif re.search("KEY :", line):
                     output.write(line)

Текущий вывод:

5
A1
4
A2

с этим кодом, если 5 принадлежит A1 словарь, он ищет только "b: ", это неправильный метод, но я не могу придумать ничего другого.

Ожидаемый результат:

Type b
 A1  5
 A2  4
 B1  3
...