Как распарсить закомментированные строки в yaml?

import yaml
from yaml.loader import SafeLoader

with open('C:\\Project\\test.yml', 'r') as f:
    data = list(yaml.load_all(f, Loader=SafeLoader))
print(data)

Файл test.yml:

fruits: apple
date: 20210709
finalized: true
project:
# - service:
#     image:
#     - chegototam-api
- ddd: null

print(data):

[{'fruits': 'apple', 'date': '20210709', 'finalized': True, 'project': [{'ddd': None}]}]

Каким образом получить закомментированные строки?


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

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

PyYAML отбрасывает комментарии на очень низком уровне (in Scanner.scan_to_next_token). По состоянию на 2020 год запрос функции о добавлении поддержки загрузки комментариев все еще откладывается.

Можно попробовать читать построчно и выбирать строки, которые начинаются с "#":

comments = []
with open("./text1.txt") as f:
    for line in f.readlines():
        if line.startswith("#"):
            comments.append(line[1:].strip())

print(comments)

ouput:

['- service:', 'image:', '- chegototam-api']
→ Ссылка