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

Rispondere a