Python:csv.reader&unicode(和postgres)

2024-04-25 00:45:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有unicode字符(西班牙语字符)的CSV。尝试将其导入utf8编码的postgres表中。以下代码:

reader = csv.reader(open(filename, 'r'), delimiter=',')

for row in reader:
    values = [None if x == '' else x for x in row]
    query = 'INSERT INTO %s.rosters VALUES(%s)' % (self.schema, ','.join(['%s'] * len(values)))
    self.executequery(query, values)

产生ERROR: invalid byte sequence for encoding "UTF8": 0xf1616461。因此,将其更改为:

^{pr2}$

产量'utf8' codec can't decode bytes in position 21-24: invalid data

有没有办法解决这个问题?在

更新文件不是UTF-8;而是Windows-1252。将值列表的赋值更改为:

values = [None if x == '' else unicode(x, 'cp1252') for x in row]

解决问题!在


Tags: csvinselfnoneforifunicodeutf8
1条回答
网友
1楼 · 发布于 2024-04-25 00:45:04

你知道CSV文件是用UTF-8编码的吗?如果是的话,你会看到这样的情况:

$ file foo.txt 
foo.txt: UTF-8 Unicode text

如果它没有说UTF-8,那么您可能需要用不同的编解码器来解码它,比如ISO-8859-1。在

相关问题 更多 >