質問
私は、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パーサー。これにより、解析を変更できます。ツリー。
所属していません StackOverflow