/ / Usa Python per cercare e sostituire thorn (þ) Character with Pipe (|) - python

Usa Python per cercare e sostituire thorn (þ) Character with Pipe (|) - python

Sto cercando di usare python per trovare il carattere "þ" della spina e sostituire con la pipe "|". Ad esempio, il file ha contenuti come 125650þ383736þ392647. Di seguito è riportato il mio codice:

f = codecs.open(path, encoding="utf-8", mode="r+")
contents = f.read()
if u"u00FE" in contents:
print "Found thorn"

Ho avuto un errore nella riga contents = f.read (): UnicodeDecodeError: il codec "utf8" non può decodificare il byte 0xfe nella posizione 7: byte di avvio non valido

Sembra che l'oggetto file f non possa decodificare il carattere della spina. Qual è il problema qui? Grazie in anticipo

risposte:

3 per risposta № 1

La causa più comune di errori di decodifica è quellastai usando la codifica sbagliata. In questo caso, sembra che il tuo file sia codificato in Windows-1252 o latin-1, non utf-8. Sono abbastanza sicuro che sia così perché 0xfe è il punto di codice per la spina lettera piccola latina per quei codec.

Per esempio:

>>> print "125650xfe383736xfe3926".decode("latin-1")
125650þ383736þ3926

0 per risposta № 2

Il tuo file non contiene codifiche UTF8 valide, né è tuo u"u00FE" la corretta codifica UTF8 di þ:

>>> u"þ".encode("utf8")
"xc3xbe"

Sembra che la codifica che ti aspetti sia latin-1:

>>> u"þ".encode("latin-1")
"xfe"

Quindi tu vuoi:

f = codecs.open(path, encoding="latin-1", mode="r+")
contents = f.read()
if u"þ" in contents:
print "Found thorn"