Чтение списка под разделом с помощью ConfigParser

Я пытаюсь прочитать из файла, в котором есть раздел, структурированный следующим образом:

[some_section]
102.45
102.68
103.1
109.4

В основном он имеет некоторые значения, которые разделены '\n'

Есть ли способ прочитать это?

Я уже пробовал следующее:

# ConfigParser(strict=Flase) the parser will allow for duplicates in a section or option 
# ConfigParser(allow_no_value=True) the parser will allow for settings without values
parser = ConfigParser(allow_no_value=True, strict=False)
parser = ConfigParser()
parser.read(file)
my_list = parser.options('some_section')

Проблема в том, что синтаксический анализатор пропускает повторяющиеся значения, и мне нужно их сохранить.


person AnarKi    schedule 09.05.2019    source источник
comment
Каков формат файла? .txt  -  person YQ.Wang    schedule 09.05.2019
comment
да, это .txt, но он структурирован как файл конфигурации   -  person AnarKi    schedule 09.05.2019


Ответы (2)


Он пропускает значения, потому что файл конфигурации имеет ключевое значение, подобное (см. Ключи формата (свойства) - https://en.wikipedia.org/wiki/INI_file), и у вас есть только ключи: см. https://docs.python.org/3/library/configparser.html.

Что-то типа

[some_section]
  Value1=100.2
  Value2=101.3

должно сработать

person kraego    schedule 09.05.2019

Если ваш текстовый файл выглядит так:

[some_section]
102.45
102.68
103.1
109.4

Вы можете попробовать это:

def parse(File):
    sectionData = {}
    with open(File, 'r') as f:
        # fist line: section name
        line = f.readline()
        sectionName = line[1:-2]
        sectionData[sectionName] = []    
        while line:
            # read and drop '\n'
            line = f.readline()[:-1]
            # skip last ''
            if line == '':
                break
            sectionData[sectionName].append(line)
    return sectionData

result = parse('test.txt')
print(result)

Ты получишь:

{'some_section': ['102.45', '102.68', '103.1', '109.4']}
person YQ.Wang    schedule 09.05.2019