Парсинг txt и вывод по шаблону

Есть txt файл где в каждой строке Имя Фамилия Почта. Необходимо распарсить txt файл, загрузить в словарь и потом через цикл подставить каждое значение в шаблон вида

config user local
    edit "ФИО1"
        set type ldap
        set email-to "ПОЧТА1"
        set ldap-server "LDAPS"
    next
end
config user local
    edit " ФИО2"
        set type ldap
        set email-to "ПОЧТА2"
        set ldap-server "LDAPS"
    next
end

и так далее.

На выходе будет уже готовый файл с таким длинным списком. Пример файла для парсинга

Pupkin Vladimir [email protected]
Ivanov Ivan [email protected]

Специально сделал отступ от фамилии и почты 2 знака.


Ответы (2 шт):

Автор решения: Zhihar

попробуйте такой код:

res = ""

with open("file.txt") as file:
    lines = file.readlines()
    lines = [line.rstrip() for line in lines]

    for line in lines:
        components = line.split()

        res += f'fconfig user local\n    edit "{" ".join(components[:2])}"\n        set type ldap\n        set email-to "{components[2]}"\n        set ldap-server "LDAPS"\n    next\nend\n'

print(res)
→ Ссылка
Автор решения: GrAnd

Можно заставить регексп сделать всю работу.

import re

template = r'''config user local
    edit "\g<name>"
        set type ldap
        set email-to "\g<email>"
        set ldap-server "LDAPS"
    next
end'''

#with open("file.txt") as f:
#    text = f.readlines()
text = '''Pupkin Vladimir [email protected]
Ivanov Ivan [email protected]'''

res = re.sub(r'^\s*(?P<name>.+)\s+(?P<email>[^\s]+)\s*$', template, text, flags=re.M)
print(res)
→ Ссылка