К счастью, есть гораздо более простой способ справиться с этим, чем анализировать текст вручную. Встроенный модуль configparser
поддерживает ключи без значений через аргумент конструктора allow_no_values
.
import configparser
read_config = configparser.ConfigParser(allow_no_value=True)
read_config.read_string('''
[First section]
s1value1
s1value2
[Second section]
s2value1
s2value2
''')
write_config = configparser.ConfigParser(allow_no_value=True)
for section_name in read_config.sections():
write_config[section_name] = {';'.join(read_config[section_name]): None}
with open('/tmp/test.ini', 'w') as outfile:
write_config.write(outfile)
Пока я не сразу вижу способ чтобы использовать тот же объект ConfigParser
для чтения и записи (он поддерживает значения по умолчанию для исходных ключей), использование второго объекта в качестве модуля записи должно дать то, что вы ищете.
Вывод из приведенного выше примера :
[First section]
s1value1;s1value2
[Second section]
s2value1;s2value2