Wenn ich es mit BeautifulSoup analysiere und unverändert ausgebe, wird es geändert, wenn ich prettify verwende. Das Bild wird anders gerendert. Der Text wird nach links verschoben. Aber es wird korrekt gerendert, wenn ich Suppe in einen String umwandele.
Eingabe:
Code: Select all
110ºC
Code: Select all
110ºC
Code: Select all
from bs4 import BeautifulSoup
bad_image_path = "test_text.svg"
with open(bad_image_path, 'r', encoding='utf8') as f:
soup = BeautifulSoup(f, "xml")
# make optional modifications to the data
with open('test_text_converted.svg', 'w', encoding='utf8') as f:
f.write(soup.prettify()) # makes weird changes
# f.write(str(soup))
- Warum verändert prettify das Bild und wie verhindere ich das?
- Wie verhindere ich, dass BeautifulSoup einen Namensraum hinzufügt Präfixe für die SVG-Elemente?
Es scheint ein Leerzeichen (Zeilenumbruch oder Leerzeichen) nach dem Verschieben von zu sein der Text links. Außer wenn ich das Attribut xml:space="preserve" entferne. Es scheint, als ob prettify in Knotenwerten, die dieses Attribut haben, keine Leerzeichen hinzufügen oder entfernen sollte, aber das tut es.
Hier ist ein vereinfachtes Beispiel, bei dem Leerzeichen geändert werden:
Code: Select all
Default spacing
reserved spacing