Использование Pandas для извлечения файла конфигурации (похоже на K / V, но не) - PullRequest
1 голос
/ 22 января 2020

У меня есть файл конфигурации в формате ниже:

Models{
    Model1{
        Description = "xxxx"
        Feature = "yyyy"
        EventType = [
            "Type1", 
            "Type2"]
    }

    Model2{
        Description = "aaaa"
        Feature = "bbbb"
        EventType = [
            "Type3", 
            "Type4"]
    }
}

Есть ли способ преобразовать это в кадр данных, как показано ниже?

|Model  | Description | Feature | EventType    | 
------------------------------------------------
|Model1 | xxxx        | yyyy    | Type1, Type2 |
|Model2 | aaaa        | bbbb    | Type3, Type4 |

1 Ответ

1 голос
/ 22 января 2020

Сначала вы должны преобразовать его в стандартный формат JSON. Вы можете выполнить sh, используя regex:

with open('untitled.txt') as f:
    data = f.read()

import re
# Converting into JSON format
data = re.sub(r'(=\s*".*")\n', r'\1,\n', data)
data = re.sub(r'(Description|Feature|EventType)', r'"\1"', data)
data = re.sub(r'}(\s*Model[0-9]+)', r'},\1', data)
data = re.sub(r'(Model[0-9]+)', r'"\1"=', data)
data = re.sub(r'(Models)', r'', data)
data = re.sub(r'=', r':', data)

Ваш файл будет выглядеть так:

{
    "Model1":{
        "Description" : "xxxx",
        "Feature" : "yyyy",
        "EventType" : [
            "Type1", 
            "Type2"]
    },

    "Model2":{
        "Description" : "aaaa",
        "Feature" : "bbbb",
        "EventType" : [
            "Type3", 
            "Type4"]
    }
}

Затем используйте pd.read_json, чтобы прочитать его:

import pandas as pd
from io import StringIO

df = pd.read_json(StringIO(data), orient='index').reset_index()
#        index Description       EventType Feature
#0  Model1        xxxx  [Type1, Type2]    yyyy
#1  Model2        aaaa  [Type3, Type4]    bbbb
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...