9

私は全体として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)

これらの線に沿って何かをしたいのですが、「hilited」はlxml.etree._Elementではないため、「TypeError」が発生します。

これは実行可能ですか?

よろしく、

4

2 に答える 2

5

lxmlに関しては、

doc.replace(block, hilited)

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

それを行うには2つの方法があります

block.text=hilited 

また

body=body.replace(block.text,hilited)
于 2009-11-28T16:19:22.930 に答える
0

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

于 2009-11-28T15:35:05.683 に答える