BeautifulSoup prettify verändert den Inhalt, nicht nur das LayoutPython

Python-Programme
Guest
 BeautifulSoup prettify verändert den Inhalt, nicht nur das Layout

Post by Guest »

Ich habe ein SVG-Bild, das eine XML-Datei ist.
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

Ausgabe:

Code: Select all






110ºC



Mein Code:

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?
Bearbeiten:
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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post