如何从YAML文件中提取带原始格式的Markdown内容
YAML提取remark字段并保留原始格式的问题
我有多个YAML文件,其中remark字段包含Markdown格式内容,想要提取该字段并完全保留原始字符串格式。
示例YAML文件(test.yml)
remark: "iljoijhoijhoiho pojpojpoij ohouihoui hp[oipoi oiiohoihjoijh [p[pik[ [oi[p kughkughiupokjpoj uiohgiuoh poipojk kpoip ouiyioyh[pop[uouypoipoikoiuo "
我写的代码
import yml import pypandoc content = yml.load('test.yml') remark = content.get('remark', None) text = pypandoc.convert_text(remark, 'rst', format='md') print(text)
问题
- 期望:输出和源文件中
remark字段的格式完全一致 - 实际:输出丢失了换行,还莫名多出了一段表格内容:
iljoijhoijhoiho pojpojpoij ohouihoui hp[oipoi oiiohoihjoijh [p[pik[ [oi[p kughkughiupokjpoj uiohgiuoh poipojk kpoip ouiyioyh[pop[uouypoipoikoiuo | heading 1 | heading 3 | heading 2 | |------------|------------|------------| | string 1,1 | string 1,3 | string 1,2 | | string 2,1 | string 2,3 | string 2,2 | | string 3,1 | string 3,3 | string 3,2 |
解决方法
你完全没必要用pypandoc做格式转换,而且Python里没有yml模块,应该用pyyaml来正确加载YAML并保留原始换行:
修正后的代码
import yaml # 打开文件并加载,保留原始字符串格式 with open('test.yml', 'r', encoding='utf-8') as f: content = yaml.safe_load(f) # 直接获取并打印原始remark内容 remark = content.get('remark', '') print(remark)
关键说明
- 去掉格式转换:你要的是原始字符串,不是把Markdown转成rst,所以
pypandoc.convert_text完全多余,反而会破坏格式 - 正确加载YAML:用
pyyaml的safe_load方法,对于双引号包裹的YAML字符串,会自动保留原始的换行和空白格式 - 避免无关错误:你输出里的表格内容是格式转换引入的错误,去掉转换步骤后就会消失
内容的提问来源于stack exchange,提问作者roman
相关产品推荐
相关产品推荐

