получить словарь из файла python

есть файл txt, содержащий следующую инфу:

- name: python-3.8.9-amd64.exe\n
  link: https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe\n
  sha256summ: e15bc52914b6daee9630360bfe3708ee646d4e4ce34bf5368066213009af70a6\n
- name: python-3.8.9-amd645.exe\n
  link: https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd645.exe\n
  sha256summ: e15bc52914b6daee9630360bfe3708ee646d4e4ce34bf5368066213009af70a6

для примера повторяется два раза, может быть бесконечным, мне нужно получить список, содержащий name: link: sha256sum: лучше в цикле, для дальнейшей обработки списка, сохранять его не нужно


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

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

Судя по виду, формат этого файла - YAML. Устанавливаете pyyaml (pip install pyyaml), дальше парсится фактически в одно действие:

file = """
- name: python-3.8.9-amd64.exe\n
  link: https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe\n
  sha256summ: e15bc52914b6daee9630360bfe3708ee646d4e4ce34bf5368066213009af70a6\n
- name: python-3.8.9-amd645.exe\n
  link: https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd645.exe\n
  sha256summ: e15bc52914b6daee9630360bfe3708ee646d4e4ce34bf5368066213009af70a6
"""

import yaml
from pprint import pprint

pprint(yaml.safe_load(file))

Вывод:

[{'link': 'https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe',
  'name': 'python-3.8.9-amd64.exe',
  'sha256summ': 'e15bc52914b6daee9630360bfe3708ee646d4e4ce34bf5368066213009af70a6'},
 {'link': 'https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd645.exe',
  'name': 'python-3.8.9-amd645.exe',
  'sha256summ': 'e15bc52914b6daee9630360bfe3708ee646d4e4ce34bf5368066213009af70a6'}]
→ Ссылка