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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python