1
我正在嘗試使用pandoc的JSON AST格式。在Python中操作嵌套字典/列表樹3
它將其格式化爲這樣。
[
{
"unMeta": {
"date": {
"t": "MetaInlines", "c": [
{"t": "Str", "c": "2015-08-23"}]},
"version": {
"t": "MetaString", "c": "0.22"},
"author": {
"t": "MetaInlines", "c": [
{"t": "Str", "c": "John"},
{"t": "Space", "c": []},
{"t": "Str", "c": "MacFarlane"}]},
"title": {
"t": "MetaInlines", "c": [
{"t": "Str", "c": "CommonMark"},
{"t": "Space", "c": []},
{"t": "Str", "c": "Spec"}]},
"license": {
"t": "MetaInlines", "c": [
{"t": "Link", "c": [
[
{"t": "Str", "c": "CC-BY-SA"},
{"t": "Space", "c": []},
{"t": "Str", "c": "4.0"}
],
["http://creativecommons.org/licenses/by-sa/4.0/", ""]]
}
]
}
}
},
[
{"t": "Header", "c": [1, ["introduction", [], []], [
{"t": "Str", "c": "Introduction"}]]},
{"t": "Header", "c": [2, ["what-is-markdown", [], []], [
{"t": "Str", "c": "What"},
{"t": "Space", "c": []},
{"t": "Str", "c": "is"},
{"t": "Space", "c": []},
{"t": "Str", "c": "Markdown?"}]]},
{"t": "Para", "c": [
{"t": "Str", "c": "Markdown"},
{"t": "Space", "c": []},
{"t": "Str", "c": "is"},
{"t": "Space", "c": []},
{"t": "Str", "c": "a"},
{"t": "Space", "c": []},
{"t": "Str", "c": "plain"},
{"t": "Space", "c": []},
{"t": "Str", "c": "text"},
{"t": "Space", "c": []},
{"t": "Str", "c": "format"},
{"t": "Space", "c": []},
{"t": "Str", "c": "for"},
{"t": "Space", "c": []},
{"t": "Str", "c": "writing"},
{"t": "Space", "c": []},
{"t": "Str", "c": "structured"},
{"t": "Space", "c": []},
{"t": "Str", "c": "documents,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "based"},
{"t": "Space", "c": []},
{"t": "Str", "c": "on"},
{"t": "Space", "c": []},
{"t": "Str", "c": "conventions"},
{"t": "Space", "c": []},
{"t": "Str", "c": "used"},
{"t": "Space", "c": []},
{"t": "Str", "c": "for"},
{"t": "Space", "c": []},
{"t": "Str", "c": "indicating"},
{"t": "Space", "c": []},
{"t": "Str", "c": "formatting"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "email"},
{"t": "Space", "c": []},
{"t": "Str", "c": "and"},
{"t": "Space", "c": []},
{"t": "Str", "c": "usenet"},
{"t": "Space", "c": []},
{"t": "Str", "c": "posts."},
{"t": "Space", "c": []},
{"t": "Str", "c": "It"},
{"t": "Space", "c": []},
{"t": "Str", "c": "was"},
{"t": "Space", "c": []},
{"t": "Str", "c": "developed"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "2004"},
{"t": "Space", "c": []},
{"t": "Str", "c": "by"},
{"t": "Space", "c": []},
{"t": "Str", "c": "John"},
{"t": "Space", "c": []},
{"t": "Str", "c": "Gruber,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "who"},
{"t": "Space", "c": []},
{"t": "Str", "c": "wrote"},
{"t": "Space", "c": []},
{"t": "Str", "c": "the"},
{"t": "Space", "c": []},
{"t": "Str", "c": "first"},
{"t": "Space", "c": []},
{"t": "Str", "c": "Markdown-to-HTML"},
{"t": "Space", "c": []},
{"t": "Str", "c": "converter"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "perl,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "and"},
{"t": "Space", "c": []},
{"t": "Str", "c": "it"},
{"t": "Space", "c": []},
{"t": "Str", "c": "soon"},
{"t": "Space", "c": []},
{"t": "Str", "c": "became"},
{"t": "Space", "c": []},
{"t": "Str", "c": "widely"},
{"t": "Space", "c": []},
{"t": "Str", "c": "used"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "websites."},
{"t": "Space", "c": []},
{"t": "Str", "c": "By"},
{"t": "Space", "c": []},
{"t": "Str", "c": "2014"},
{"t": "Space", "c": []},
{"t": "Str", "c": "there"},
{"t": "Space", "c": []},
{"t": "Str", "c": "were"},
{"t": "Space", "c": []},
{"t": "Str", "c": "dozens"},
{"t": "Space", "c": []},
{"t": "Str", "c": "of"},
{"t": "Space", "c": []},
{"t": "Str", "c": "implementations"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "many"},
{"t": "Space", "c": []},
{"t": "Str", "c": "languages."},
{"t": "Space", "c": []},
{"t": "Str", "c": "Some"},
{"t": "Space", "c": []},
{"t": "Str", "c": "of"},
{"t": "Space", "c": []},
{"t": "Str", "c": "them"},
{"t": "Space", "c": []},
{"t": "Str", "c": "extended"},
{"t": "Space", "c": []},
{"t": "Str", "c": "basic"},
{"t": "Space", "c": []},
{"t": "Str", "c": "Markdown"},
{"t": "Space", "c": []},
{"t": "Str", "c": "syntax"},
{"t": "Space", "c": []},
{"t": "Str", "c": "with"},
{"t": "Space", "c": []},
{"t": "Str", "c": "conventions"},
{"t": "Space", "c": []},
{"t": "Str", "c": "for"},
{"t": "Space", "c": []},
{"t": "Str", "c": "footnotes,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "definition"},
{"t": "Space", "c": []},
{"t": "Str", "c": "lists,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "tables,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "and"},
{"t": "Space", "c": []},
{"t": "Str", "c": "other"},
{"t": "Space", "c": []},
{"t": "Str", "c": "constructs,"},
{"t": "Space", "c": []},
{"t": "Str", "c": "and"},
{"t": "Space", "c": []},
{"t": "Str", "c": "some"},
{"t": "Space", "c": []},
{"t": "Str", "c": "allowed"},
{"t": "Space", "c": []},
{"t": "Str", "c": "output"},
{"t": "Space", "c": []},
{"t": "Str", "c": "not"},
{"t": "Space", "c": []},
{"t": "Str", "c": "just"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "HTML"},
{"t": "Space", "c": []},
{"t": "Str", "c": "but"},
{"t": "Space", "c": []},
{"t": "Str", "c": "in"},
{"t": "Space", "c": []},
{"t": "Str", "c": "LaTeX"},
{"t": "Space", "c": []},
{"t": "Str", "c": "and"},
{"t": "Space", "c": []},
{"t": "Str", "c": "many"},
{"t": "Space", "c": []},
{"t": "Str", "c": "other"},
{"t": "Space", "c": []},
{"t": "Str", "c": "formats."}]}]]
我怎麼能發生變異/格式化該這樣,當"t"
和"c"
是字典鍵,我得到一個更可讀的字典在字典鍵t
的價值是我的新字典的關鍵,和值'c'
是我的新詞典的價值。
成功的結果會是這個樣子:
{
"unMeta": {
"date": {
"MetaInlines": [
{"Str": "2015-08-23"}]},
"version": {
"MetaString": "0.22"},
"author": {
"MetaInlines": [
{"Str": "John"},
{"Space": []},
{"Str": "MacFarlane"}]},
"title": {
"MetaInlines": [
{"Str": "CommonMark"},
{"Space": []},
{"Str": "Spec"}]},
"license": {
"MetaInlines": [
{"Link": [
[
{"Str": "CC-BY-SA"},
{"Space": []},
{"Str": "4.0"}
],
["http://creativecommons.org/licenses/by-sa/4.0/", ""]]
}
]
}
}
},
我目前的策略是這樣的。在一個while循環中,我一直迭代,直到找到"t"
和"c"
作爲字典的鍵,然後我在包含鍵的字典上調用一個函數,該函數返回一個新的字典,將found
設置爲True
,並在原來的位置字典值,然後讓while循環運行,直到找不到更多的實例。有沒有更好的辦法?
你能分享你寫的代碼嗎? –