亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 yattag 庫輸出 CDATA

如何使用 yattag 庫輸出 CDATA

米脂 2022-08-02 17:21:41
我正在嘗試使用以下代碼生成包含標記的XML文件。</documents>string = "dasdd Wonder asdf new single, “Tomorrow” #URL# | " \    "oiojk asfddsf releases new asdfdf, “gfsg” | " \    "Identity of asfqw who dasd off asdfsdf Mainland jtyjyjui revealed #URL#"from yattag import Doc, indentimport html, redoc, tag, text = Doc().tagtext()with tag('author',):    with tag('documents'):        for tweet in string.split(' | '):            with tag('document'):                tweet = html.unescape(tweet)                text('<![CDATA[{}]]'.format(tweet))result = indent(doc.getvalue(), indentation=' ' * 4, newline='\n')with open('test.xml', 'w', encoding='utf-8') as f:    f.write(result)我想在文本周圍添加標記,但是當我打開生成的文件時使用而不是將輸出為:CDATANotepad++<document><![CDATA[oiojk asfddsf releases new asdfdf, “gfsg”]]></document>它看起來像(使用HTML實體):<document>&lt;![CDATA[oiojk asfddsf releases new asdfdf, “gfsg”]]</document>我試圖使用庫(行)來丟棄HTML實體,但我無法做到。HTMLhtml.unescape如何解決此編碼問題?
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

該方法始終將“<”替換為 。如果您不希望進行此類轉義,則可以改用該方法(它將插入字符串“按原樣”)。但是,在您的情況下,使用Yattag的方法會更合適。text&lt;asiscdata


from yattag import Doc

help(Doc.cdata)

cdata(self, strg, safe=False) 追加一個包含所提供字符串的 CDATA 部分。


您不必擔心可能會終止 CDATA 部分的序列。它們將替換為 。]]>]]]]><![CDATA[>


如果您確定字符串不包含 ,則可以傳遞 。如果這樣做,則不會在字符串中搜索序列。]]>safe = True]]>


因此,在您的情況下,您可以執行以下操作:


for tweet in string.split(' | '):

    with tag('document'):

        tweet = html.unescape(tweet)

        doc.cdata(tweet)


查看完整回答
反對 回復 2022-08-02
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號