Python 获取“cp950”编解码器的Unicode解码错误无法解码位置2516处的字节0x80:非法多字节序列
我想读取CSV文件call testing.CSV,并使用Python将其导入SQLite数据库 但是,获取错误 以下是Python代码:Python 获取“cp950”编解码器的Unicode解码错误无法解码位置2516处的字节0x80:非法多字节序列,python,sqlite,csv,Python,Sqlite,Csv,我想读取CSV文件call testing.CSV,并使用Python将其导入SQLite数据库 但是,获取错误 以下是Python代码: import csv, sqlite3 con= sqlite3.connect('my_dataset.db') cur = con.cursor() cur.execute("CREATE TABLE t(aa,bb,cc,dd);") with open('testing.csv','r') as fin: dr = csv.DictRe
import csv, sqlite3
con= sqlite3.connect('my_dataset.db')
cur = con.cursor()
cur.execute("CREATE TABLE t(aa,bb,cc,dd);")
with open('testing.csv','r') as fin:
dr = csv.DictReader(fin)
to_db = [(i['aa'], i['bb'],i['cc'],i['dd']) for i in dr]
cur.executemany("INSERT INTO t(aa,bb,cc,dd) VALUES (?,?,?,?);", to_db)
con.commit()
con.close()
以下是CSV文件:
此外,我还想得到每行的平均值、最大值和最小值。我应该使用SQL关键字AVG、MAX、MIN还是其他方式?有什么想法吗?我应该把它放在哪里
谢谢~将您的csv解码为utf-8
为此,请更改:
打开'testing.csv','r'作为fin:
到
打开'testing.csv','r',encoding='utf-8'作为fin:时,您尚未为csv文件指定编码。默认值可能不适用于该特定文件,您需要找出创建该文件所使用的编码。出现了不同的错误:UnicodeDecodeError:“utf-8”编解码器无法解码位置2516的字节0x80:无效的开始字节TEI检查我的CSV文件的编码,也就是@AlexYip,您可能在该csv中有非ascii字符阻止您解码,只需执行errors='ignore',这样就可以打开'testing.csv','r',encoding='utf-8',errors='ignore'。这意味着只包括csv的ascii字符,我猜这是您想要添加到表中的字符。@AlexYip对于第二部分,是的,您可以使用sql AVG MAX MIN。如果您想使用其他内容,您可以使用sql获取行,然后使用python计算如下值:sql=SELECT*FROM t;row=cur.executesql.fetchone平均值、最大值、最小值=sumrow/lenrow、maxrow、minrow。至于你应该用什么,那么,两种方法都试一下,看看什么最适合你。我真的不知道你的用例,也许sql根本不需要,你可以用pandas来代替。话虽如此,如果这个答案对你有帮助,一定要把它标记正确,以便将来ppl看到。