Разбор нескольких полей в одноцветный вектор в Python - PullRequest
0 голосов
/ 14 сентября 2011

Есть ли хороший пример в Python для разбора нескольких строк входного файла в одно значение? Например, у меня есть входной файл, который выглядит примерно так:

BackgroundColor_R=0.0
BackgroundColor_G=0.0
BackgroundColor_B=0.0
BackgroundColor_A=0.0
DensityCorrection_Color_R=1.0
DensityCorrection_Color_G=1.0
DensityCorrection_Color_B=1.0

Идея состоит в том, чтобы получить BackgroundColor в единый цветной векторный объект, а также DensityCorrection, но они имеют разные размеры, и я хотел бы избежать специальной логики для каждого параметра. Есть идеи?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2011

Примерно так должно работать (но лучше использовать configparser для первого бита):

data = {}

for l in open('input').readlines():
    key, value = l.split("=")
    vector_name = key.split("_")[0]
    vector = data.get(vector_name,[])
    vector.append(value)
    data[vector_name] = vector

print data
0 голосов
/ 14 сентября 2011

Ваши данные имеют два естественных представления, одно из которых основано на структуре файла конфигурации, а другое - на основе использования в программе. В духе PEP 20 (Zen of Python) преобразование из одной формы в другую должно быть явным.

BackgroundColor = (float(config['BackgroundColor_R']),
                   float(config['BackgroundColor_G']),
                   float(config['BackgroundColor_B']),
                   float(config['BackgroundColor_A']))
0 голосов
/ 14 сентября 2011

Вы можете проанализировать такой файл с помощью анализатора INI-файлов. http://docs.python.org/library/configparser.html.

Но структура данных зависит от вас. Это зависит от ваших потребностей.

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