سؤال

أنا جديدة إلى حد ما 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)

أريد أن أفعل شيء على طول هذه الخطوط, ولكن هذه النتائج في "TypeError" لأن "هذه الإضافة غير متوافقة" ليس lxml.etree._Element.

هل هذا ممكن ؟

التحيات ،

هل كانت مفيدة؟

المحلول

فيما يتعلق lxml,

في doc.replace(block, hilited)

كتلة هو lxml هو عنصر الكائن ، هذه الإضافة غير متوافقة هو سلسلة لا يمكنك الاستعاضة عن ذلك.

هناك 2 طرق للقيام بذلك

block.text=hilited 

أو

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

نصائح أخرى

إذا كنت جديدا على موزعي الثعبان HTML، قد جرب BeautifulSoup ، وأتش تي أم أل / أكس محلل، والتي تتيح لك تعديل تحليل شجرة بسهولة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top