[Python] Domanda facile facile su caso manipolazione unicode
Riccardo Magliocchetti
riccardo.magliocchetti a gmail.com
Mer 28 Gen 2015 23:16:29 CET
Ciao Marco,
Il 28/01/2015 18:32, Marco Ippolito ha scritto:
> Scusa se non sono stato chiaro.
>
> Il problema è quello della sostituzione di simboli tipo "”", o tipo
> "č", con simboli pių facilmente manipolabili, esempio "'" e "e'".
> Per cui ho messo queste coppie di simbolo-sostituto all'interno di un file json.
Ho capito che questo č quello che hai fatto. Quello che io mi chiedo č:
perchč lo devi fare? che problema risolvi facendolo? Spesso perdiamo
tempo a risolvere problemi che ci auto infliggiamo :)
Posso capire i caratteri unicode ma sostituire i caratteri latini tipo
le lettere accentate non lo capisco. Devi trasformarli in ASCII o altro
charset particolare? Se č una questione di encoding, con le stringhe
unicode in python 2.7 puoi fare cosė per esempio:
>>> u = u'#ð@đß'
>>> u.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf0' in
position 1: ordinal not in range(128)
>>> u.encode('ascii', 'ignore')
'#@'
Dove quello che non riesce a convertire nel charset richiesto viene
ignorato. Hai altri modi di trattare gli errori, vedi
https://docs.python.org/2/howto/unicode.html
Detto questo se non puoi perdere pezzi nella traduzione io farei
qualcosa del genere:
def sanitize(c):
# TODO: tutti i maneggi con unicode che ti servono
conv = conversion_table.get(c):
if conv:
return conv
return c
# puoi anche usare map se ti aggrada
notanunicode_string = ''.join([sanitize(c) for c in unicode_string])
Cosė fai solo un giro per ogni carattere della tua stringa
riccardo
Maggiori informazioni sulla lista
Python