[Python] lettere accentate in un file csv

Daniele Zambelli daniele.zambelli a gmail.com
Gio 21 Giu 2012 12:27:00 CEST


Salve, devo modificare l'intestazione di un file csv.

Il file originale è:

"id","019 [E' la più ]","019 [Abbiamo]","019 [perché ci ]","019
[Consigli di amici]"
"3","NO","NO","NO","Sì"
"4","NO","Sì","Sì","NO"

vorrei:

"id","E' la più ","Abbiamo","perché ci","019 [Consigli di amici]"
"3","NO","NO","NO","Sì"
"4","NO","Sì","Sì","NO"

Il programma è i seguente:

NFI = 'prova_orig.csv'
NFO = 'prova_mod.csv'

TRANSLATE_HEADER = {'''"019 [E' la più ]"''': '''"E' la più"''',
                    '''"019 [Abbiamo]"''': '''"Abbiamo"''',
                    '''"019 [perché ci ]"''': '''"perché ci"''',
}
for k, v in TRANSLATE_HEADER.items(): print(k, '-->', v)

def mod_header(line):
    lline = line.split(',')
#    for s in lline: print(s)
    for i in range(len(lline)):
        print(lline[i])
        lline[i] = TRANSLATE_HEADER.get(lline[i], lline[i])
        print(lline[i])
    return(','.join(lline))

fi = file(NFI)
fo = file(NFO, 'w')
oldtext = fi.readlines()
fo.write(mod_header(oldtext.pop(0)))
for line in oldtext:
    fo.write(line)
fo.close()

ma ottengo:

"id","019 [E' la più ]","Abbiamo","019 [perché ci ]","019 [Consigli di amici]"
"3","NO","NO","NO","Sì"
"4","NO","Sì","Sì","NO"

Cioè i campi che contengono lettere accentate non vengono cambiati. Ma
se provo le stesse cose nella shell IDLE su stringhe non lette dal
file sembra che funzioni...

Qualche consiglio?

Grazie

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,


Maggiori informazioni sulla lista Python