import re lessons = [] row = {} columns = ['subject', 'weekday', 'time', 'group', 'audience', 'teacher', 'type', 'format'] header = 'Предмет,День недели,Время,Группа,Аудитория,Учитель,Тип урока,Формат урока' with open('input-csv.yaml', encoding='UTF-8') as f: for i in f.readlines()[1:]: if i.strip()[0] == '-': if row: lessons.append(row) row = {} i = i.split(':') i[1] = ':'.join(i[1:]) i[0] = i[0].replace('-', '').strip() i[1] = i[1].replace('"', '""').strip() if any(map(lambda x: x in i[1], ['"', ',', "\\n"])): i[1] = f'"{i[1]}"' row[i[0]] = i[1] lessons.append(row) output = header + '\n' with open('output.csv', 'w', encoding='UTF-8') as f: for i in lessons: for key in columns: output += i.get(key, '') + ',' output = output[:-1] + '\n' f.write(output) print(output)