質問

私は、lxmlおよびHTMLパーサー全体としてはかなり新しいです。 ツリー内の要素を別の要素に置き換える方法があるかどうか疑問に思っていました...

たとえば、私が持っているもの:

body = """<code> def function(arg): print arg </code> Blah blah blah <code> int main() { return 0; } </code> """

doc = lxml.html.fromstring(body)
codeblocks = doc.cssselect('code')

for block in codeblocks:
  lexer = guess_lexer(block.text_content())
  hilited = highlight(block.text_content(), lexer, HtmlFormatter())
  doc.replace(block, hilited)

これらの行に沿って何かをしたいのですが、これにより&Type; TypeError&quot;が発生します。 「ハイライトされた」ためlxml.etree._Elementではありません。

これは可能ですか?

よろしく、

役に立ちましたか?

解決

lxmlについて

doc.replace(block、hilited)

block はlxmlのElementオブジェクトです。 hilited は文字列です。これを置き換えることはできません。

2つの方法があります

block.text=hilited 

または

body=body.replace(block.text,hilited)

他のヒント

Python HTMLパーサーを初めて使用する場合は、 BeautifulSoup を試してみてください。 html / xmlパーサー。これにより、解析を変更できます。ツリー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top