Text Datei mit BOM ändern...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Möchte eine Textdatei mit Python 3 ändern. Diese hat ein BOM: \ufeff

Gibt es keine Möglichkeit, das ich mich nicht um den BOM selbst kümmern muß? Also das Python alles selbst macht?!?

Also ich öffne die Datei, python liest den BOM und stellt entsprechendes encoding ein. Ich kann Zeilen ändern und speichern und Python speichert wieder mit BOM und dem passenden Encoding?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: AFAIK geht das nicht, man muss sich zumindest bei UTF-8 selber um BOMs kümmern. Da haben die allerdings eigentlich auch nichts zu suchen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Für utf-8 gibt es doch utf-8-sig?

Code: Alles auswählen

>>> with open('something.txt', 'w', encoding='utf-8-sig') as f:
...     f.write('something')
... 
9
>>> with open('something.txt', 'rb') as f:
...     content = f.read()
... 
>>> content
b'\xef\xbb\xbfsomething'
>>> with open('something.txt', 'r', encoding='utf-8-sig') as f:
...     content = f.read()
... 
>>> content
'something'
BlackJack

@DasIch: Die Frage war ja ob man sich da selber drum kümmern muss, und das muss man. Man muss explizit angeben dass die Daten ein BOM haben oder das selbst weg machen wenn man nur UTF-8 angegeben hat.
Antworten