Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取“cp950”编解码器的Unicode解码错误无法解码位置2516处的字节0x80:非法多字节序列_Python_Sqlite_Csv - Fatal编程技术网

Python 获取“cp950”编解码器的Unicode解码错误无法解码位置2516处的字节0x80:非法多字节序列

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

我想读取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.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看到。