Hãy xem xét các phiên python sau:find() sau khi replaceWith() không hoạt động (sử dụng BeautifulSoup)
>>> from BeautifulSoup import BeautifulSoup
>>> s = BeautifulSoup("<p>This <i>is</i> a <i>test</i>.</p>"); myi = s.find("i")
>>> myi.replaceWith(BeautifulSoup("was"))
>>> s.find("i")
>>> s = BeautifulSoup("<p>This <i>is</i> a <i>test</i>.</p>"); myi = s.find("i")
>>> myi.replaceWith("was")
>>> s.find("i")
<i>test</i>
Xin lưu ý đầu ra thiếu của s.find ("i") sau khi dòng 4!
Lý do cho việc này là gì? Có cách giải quyết nào không?
EDIT: Trên thực tế, ví dụ không chứng minh usecase, đó là:
myi.replaceWith(BeautifulSoup("wa<b>s</b>"))
Bất cứ khi nào phần chèn chứa bản thân mã html nontrivial, tôi không thấy làm thế nào bạn có thể thay thế cú pháp này với một cái gì đó khác. Chỉ cần có
myi.replaceWith("wa<b>s</b>")
sẽ thay thế ký tự đặc biệt html theo thực thể.
Tại sao bạn cần thay thế bằng 'sometag.renderContents()' thay vì chỉ thay thế bằng 'someTag'? – BrenBarn
Được rồi, hãy cụ thể hơn bằng cách thêm một ví dụ khác ... (xem ở trên, tôi đã chỉnh sửa lại) – thomas