Python에서 Markdown을 로드하는 방법

18398 단어 python
패키지eyeseast/python-frontmatter를 사용하여 frontmatter가 포함된 파일을 로드합니다. 구조화된 프론트매터(yaml, json 또는 toml)로 파일을 로드할 수 있는 편리한 패키지입니다.

설치



pypi에 있으므로 pip를 사용하여 가상 환경에 설치할 수 있습니다.

python -m pip install python-frontmatter


🙋 프론트매터란?



Frontmatter는 일반 텍스트 파일에 메타데이터를 추가하는 편리한 방법입니다. markdown에서 yaml frontmatter를 사용하는 것은 매우 일반적입니다. 내 모든 블로그 게시물에는 게시 날짜, 태그, 제목 및 템플릿과 같은 게시물 메타데이터를 제공하는 yaml frontmatter가 있습니다. dev.to는 마크다운 및 yaml frontmatter로 모든 게시물을 빌드하는 인기 있는 개발자 블로깅 플랫폼입니다.

예를 보자



내 사이트에서 읽고 있는 이 게시물의 정확한 전문은 다음과 같습니다.

---
date: 2022-03-24 03:18:48.631729
templateKey: til
title: How I load Markdown in Python
tags:
  - linux
  - python

---

This is where the markdown content for the post goes.


그래서 얌이야



yaml이 가장 일반적이지만 python-frontmatter은 toml 및 json에 대한 Handlers도 지원합니다.

좋은 yaml 예제 세트learnxinyminutes를 원하는 경우 한 페이지에 환상적인 예제 세트가 있습니다.

Python에서 yaml frontmatter를 로드하는 방법



다음은 python-frontmatter을 사용하여 이 게시물을 Python에 로드하는 방법입니다.

import frontmatter inspect(frontmatter.load("pages/til/python-frontmatter.md"))


rich을 사용하여 Post 객체를 검사하여 포함된 모든 항목을 확인할 수 있습니다.

 inspect(frontmatter.load("pages/til/python-frontmatter.md"))
╭────────────────────────────────────────────────────────── <class 'frontmatter.Post'> ───────────────────────────────────────────────────────────╮
│ A post contains content and metadata from Front Matter. This is what gets                                                                       │
│ returned by :py:func:`load <frontmatter.load>` and :py:func:`loads <frontmatter.loads>`.                                                        │
│ Passing this to :py:func:`dump <frontmatter.dump>` or :py:func:`dumps <frontmatter.dumps>`                                                      │
│ will turn it back into text.                                                                                                                    │
│                                                                                                                                                 │
│ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ <frontmatter.Post object at 0x7f03c4c23ca0>                                                                                                 │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                                                                 │
│  content = "I use a package\n[eyeseast/python-frontmatter](https://github.com/eyeseast/python-frontmatter)\nto load files with frontmatter in   │
│            them.  Its a handy package that allows you to\nload files with structured frontmatter (yaml, json, or toml).\n\n## Install\n\nIt's   
            on pypi, so you can install it into your virtual environment with pip.\n\n```
{% endraw %}
bash\npython -m pip install                             
            python-frontmatter\n
{% raw %}
```\n\n## 🙋 What's Frontmatter\n\nFrontmatter is a handy way to add metadata to your plain text files.          │
            It's\nquite common to have yaml frontmatter in markdown.  All of my blog posts have\nyaml frontmatter to give the post metadata such │
│            as post date, tags, title, and\ntemplate.  dev.to is a popular developer blogging platform that also builds all\nof its posts with   │
│            markdown and yaml frontmatter.\n\n## Let's see an example\n\nHere is the exact frontmatter for this post you are reading on my       
            site.\n\n```
{% endraw %}
markdown\n---\ndate: 2022-03-24 03:18:48.631729\ntemplateKey: til\ntitle: How I load Markdown in Python\ntags:\n  -      
            linux\n  - python\n\n---\n\nThis is where the markdown content for the post goes.\n
{% raw %}
```\n\n## So it's yaml\n\nyaml is the most        │
            commmon, but\n[eyeseast/python-frontmatter](https://github.com/eyeseast/python-frontmatter)\nalso                                    
            supports\n[Handlers](https://python-frontmatter.readthedocs.io/en/latest/handlers.html?highlight=toml#module-frontmatter.default_ha… │
            toml and json.\n\nIf you want a good set of examples of yaml\n[learnxinyminutes](https://learnxinyminutes.com/docs/yaml/) has a      
            fantastic set\nof examples in one page.\n\n## How to load yaml frontmatter in python"                                                │
  handler = <frontmatter.default_handlers.YAMLHandler object at 0x7f03bffbd910>                                                                  
 metadata = {                                                                                                                                    
                'date': datetime.datetime(2022, 3, 24, 3, 18, 48, 631729),                                                                       
                'templateKey': 'til',                                                                                                            
                'title': 'How I load Markdown in Python',                                                                                        
                'tags': ['linux', 'python', 'python']                                                                                            
            }                                                                                                                                    
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯


my personal site handled this a bit better than dev.to https://waylonwalker.com/til/python-frontmatter/#how-to-load-yaml-frontmatter-in-python



메타데이터 가져오기



사전에서와 마찬가지로 게시물 메타데이터에서 항목을 가져올 수 있습니다.

post = frontmatter.load("pages/til/python-frontmatter.md") post['date']
# datetime.datetime(2022, 3, 24, 3, 18, 48, 631729)

post.get('date')
# datetime.datetime(2022, 3, 24, 3, 18, 48, 631729)


I have recently become fond of the .get method to give it an easy default value. 👉 full post



내용은 내용이다



문서의 내용은 .content에 저장됩니다.

post.content


연결


  • python dict get
  • eyeseast/python-frontmatter
  • python-frontmatter
  • python-frontmatter Handlers
  • learnxinyminutes
  • python-frontmatter
  • rich
  • 좋은 웹페이지 즐겨찾기