程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python二十行代碼實現hexo的md文件格式解析

編輯:Python

最近用django+Vue實現了一個博客應用,原來的hexo的博客用著也挺好,想繼續留著用,於是就想將hexo生成的.md的博客內容文件解析後直接寫到django的博客數據庫裡做同步顯示。

hexo生成的.md文件內容主要分兩部分,一部分是博客的信息、一部分是博客內容,博客信息包括標題、目錄、標簽、發布日期等,博客內容就是具體博客寫的內容主體了。

其中博客信息通過"—“來區分,夾在兩個”—“塊之間。博客的信息是yaml來描敘的需要解析並提取出相應的字段及內容,博客內容就更簡單了直接是markdown描敘的不需要再解析了。
這裡要做的事情就是提取兩個”—“符號之間的內容,並解析相應的字段,提取兩個”—"符號後面的內容作為博客的內容,形成字典,便於後面的入庫。

代碼示例如下:
yaml的解析可以直接用Python的PyYAML庫

pip install PyYAML
# -*- coding: utf-8 -*-
""" :author: XieJava :url: http://ishareread.com :copyright: 2021 XieJava <[email protected]> :license: MIT, see LICENSE for more details. """
import yaml
'''將md文件轉成blog對象'''
def parseblog(blog_md_file):
#讀md文件
md_f = open(blog_md_file, "r",encoding='utf-8')
md_f_str=md_f.read()
#解析兩個---之間的內容
pattern='---'
blog_data={
}
pattern_list=list(pattern_search(md_f_str, pattern))
if len(pattern_list)>=2:
blog_info_str=md_f_str[pattern_list[0]+len(pattern):pattern_list[1]]
blog_data=yaml.load(blog_info_str,Loader=yaml.SafeLoader)
blog_data['content']=md_f_str[pattern_list[1]+len(pattern):]
md_f.close()
return blog_data
'''分割符號匹配檢索'''
def pattern_search(string,pattern):
index=0
while index<len(string)-len(pattern):
index=string.find(pattern,index,len(string))
if index==-1:
break
yield index
index+=len(pattern)-1
if __name__ == '__main__':
blog_data=parseblog('E:\\CloudStation\\personal\\xiejavablog\\myhexo\\myblog\\source\\_posts\\2022-07-19-Vue3解析markdown解析並實現代碼高亮顯示.md')
print(blog_data)

效果:
可以看到hexo的md文件正確解析出來,形成字典。後續可以直接進行入庫操作了。

Python的庫還是很豐富實用的,用Python二十行代碼就實現hexo的md文件格式解析。

源代碼倉庫:https://gitee.com/ishareblog/ishareblog


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved