Buongiorno a tutti,
è sicuramente una cosa banale ma sto sbattendo la testa sul seguente
problema:

* dal nostro gestionale recupero un file CSV con lettere accentate,
apostrofi e quant'altro.
* devo importare il tutto in un file sqlite

Utilizzo il seguente codice (è una prova quindi non badate alle finezze):

*import sqlite3
import os
import csv

con=sqlite3.connect('dbe.sqlite')
cur=con.cursor()

try:
    cur.execute('DROP TABLE cqrep000f')
except:
    pass

cur.execute('''
        CREATE  TABLE "cqrep000f" (
            # segue una cinquantina di campi
            )
    ''')
con.commit()

f = open('cqrep.csv')

csv_reader = csv.reader(f, delimiter=';', quotechar = '"')

for row in csv_reader:
    l=len(row)
    for i in range(l):
        row[i]=unicode(row[i])

    cur.execute('INSERT INTO cqrep000f VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', row)
    con.commit()

cur.close()
con.close(*)

Tutto funziona finchè non incontra lettere con accenti, apostrofi o cose
strane.
L'errore che mi restituisce è il seguente:

*"row[i]=unicode(row[i])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 4:
ordinal not in range(128)"
*

Come posso ovviare il problema?
Grazie per gli aiuti.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a