簡體   English   中英

我如何用Python解析'Front Matter'

[英]How would I parse 'Front Matter' with Python

我似乎無法解釋如何用Python解析'Front Matter'。 我有以下內容:

---
name: David
password: dwewwsadas
email: david@domain.com
websiteName: Website Name
websitePrefix: websiteprefix
websiteDomain: domain.com
action: create
---

我正在使用以下代碼:

listing = os.listdir(path)
for infile in listing:
    stream = open(os.path.join(path, infile), 'r')
    docs = yaml.load_all(stream)
    for doc in docs:
        for k,v in doc.items():
            print k, "->", v
    print "\n",

由於第二組---我一直都會遇到錯誤

我知道這是一個老問題,但我遇到了同樣的問題,並使用了python-frontmatter 以下是向Front事件添加新變量的示例:

import frontmatter
import io
from os.path import basename, splitext
import glob

# Where are the files to modify
path = "en/*.markdown"

# Loop through all files
for fname in glob.glob(path):
    with io.open(fname, 'r') as f:
        # Parse file's front matter
        post = frontmatter.load(f)
        if post.get('author') == None:
            post['author'] = "alex"
            # Save the modified file
            newfile = io.open(fname, 'w', encoding='utf8')
            frontmatter.dump(post, newfile)
            newfile.close()

來源如何用python解析frontmatter

---啟動新的文件,並導致你的第二個文件是空的, docNone第二部分。 你遍歷doc的鍵值對,好像每個doc都是Python dict或等效類型,但是None不是,所以你應該在你的循環中測試它(當然有多種方法可以做到這一點,並且如果doc不是dict ,該怎么辦):

....
for doc in yaml.load_all(stream):
    if hasattr(doc, 'items'):
        for k, v in doc.items():
            print k, "->", v
    else:
        print doc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM