[Python] carattere aptang: ø
Ciao!
Ho un file di testo con diversi carattere speciali. Tra tutti l'unico carattere che mi crea problemi è la aptang (ossia l'o barrata):
http://www.fileformat.info/info/unicode/char/00F8/index.htm
https://it.wikipedia.org/wiki/%C3%98
Se ad esempio aggiungo ad un modulo l'istruzione:
ed importo tale modulo dall'interprete, ottengo il seguente errore:
Immagino ciò sia dovuto al fatto che, come si intuisce dal traceback, il codec dello stdout sia cp437.
Mentre se eseguo la stessa istruzione direttamente dal'interprete ottengo:
cioè le aptang vengono convertite in o normali.
Come posso risolvere? Grazie mille!
Ho un file di testo con diversi carattere speciali. Tra tutti l'unico carattere che mi crea problemi è la aptang (ossia l'o barrata):
http://www.fileformat.info/info/unicode/char/00F8/index.htm
https://it.wikipedia.org/wiki/%C3%98
Se ad esempio aggiungo ad un modulo l'istruzione:
# mymodule.py print(u'smørbrød'.encode('utf_8').decode('utf_8'))
ed importo tale modulo dall'interprete, ottengo il seguente errore:
>>> import mymodule ... File "...\mymodule.py", line 1, in <module> print(u'sm\xf8rbr\xf8d'.encode('utf_8').decode('utf_8')) File "...\Python\Python35-32\lib\encodings\cp437.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\xf8' in position 2: character maps to <undefined>
Immagino ciò sia dovuto al fatto che, come si intuisce dal traceback, il codec dello stdout sia cp437.
Mentre se eseguo la stessa istruzione direttamente dal'interprete ottengo:
>>> print('smørbrød'.encode('utf_8').decode('utf_8')) smorbrod
cioè le aptang vengono convertite in o normali.
Come posso risolvere? Grazie mille!
Risposte
Ho provato a eseguire entrambe le tue linee di codice (sia direttamente nel prompt che sotto forma di modulo) e non ho riscontrato errori. Comunque se usi Python 3 (dal traceback vedo che lo stai usando) non dovresti avere questo tipo di problemi, mi pare che le stringhe vengano gestite automaticamente con utf-8. Comunque non mi è nemmeno chiaro quale sia il tuo problema, cosa cerchi di ottenere?
Se vuoi semplicemente sostituire l'aptang con una "o" basta
Spero di non aver detto cavolate, sono un po' arrugginito con Python.
Se vuoi semplicemente sostituire l'aptang con una "o" basta
'smørbrød'.replace('ø', 'o')
Spero di non aver detto cavolate, sono un po' arrugginito con Python.