[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