Python PyQt:我如何知道使用了哪种编码?

Python PyQt:我如何知道使用了哪种编码?,python,pyqt,Python,Pyqt,我有一个使用Qt Designer的py文件,我有一个组合框,我从csv文件中读取。如果组合框选项在文件中,它会打印一些东西 脚本顶部写着:#-*-编码:utf-8-*- 因此,我得到的错误是: PyQt4.QtCore.QString(u'choice') is not in list “选择”当然在列表中。我相信这是一个编码问题,但我只知道这些 u'choice'是一个字符串,列表包含字符串 以下是我向列表中添加项目的方式: import csv list1=csv.reader(open

我有一个使用Qt Designer的py文件,我有一个组合框,我从csv文件中读取。如果组合框选项在文件中,它会打印一些东西

脚本顶部写着:
#-*-编码:utf-8-*-

因此,我得到的错误是:

PyQt4.QtCore.QString(u'choice') is not in list
“选择”当然在列表中。我相信这是一个编码问题,但我只知道这些

u'choice'是一个字符串,列表包含字符串

以下是我向列表中添加项目的方式:

import csv
list1=csv.reader(open('file.csv', "rb"))
list2=[]
for i in list1:
   list2.append(i)

有什么想法吗?谢谢。

这与编码无关

发生错误的原因很简单,因为从csv文件读取的列表中没有字符串:

>>> import csv
>>> with open('tmp.csv', 'wb') as stream:
...     csv.writer(stream).writerow(['choice'])
... 
>>> lst = []
>>> with open('tmp.csv', 'rb') as stream:
...     for row in csv.reader(stream):
...         lst.append(row)
... 
>>> from PyQt4.QtCore import QString
>>> s = QString(u'choice')
>>> lst.index(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: PyQt4.QtCore.QString(u'choice') is not in list
>>> lst
[['choice']]
>>> lst[0].index(s)
0
导入csv >>>以open('tmp.csv','wb')作为流: ... csv.writer(stream.writerow(['choice'])) ... >>>lst=[] >>>以open('tmp.csv','rb')作为流: ... 对于csv.reader(流)中的行: ... lst.append(行) ... >>>从PyQt4.QtCore导入QString >>>s=Q字符串(u'choice') >>>一级索引 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:PyQt4.QtCore.QString(u'choice')不在列表中 >>>lst [choice']] >>>lst[0]。索引 0
csv读取器返回文件中每一行的字符串列表。

PyQt4.QtCore.QString(u'choice')的值是多少?什么是“列表”(可能不是内置类型列表)?您得到的确切错误消息是什么?您正在执行的代码行是什么?粘贴一个向列表中添加值的代码段list2是字符串列表,而不是字符串列表,如果这是您的意思的话。那么,您说我的list2没有字符串?我在这里有点迷茫。在您的代码中,
list1
是一个
csv.reader
,它是一个类似文件的对象,可以逐行解析csv文件。在
for
循环中,
i
将是表示该行的字符串列表。因此
list2
成为一个包含字符串列表的列表。因此,
list2
中没有字符串,只有(字符串的)列表。当然,我的推理完全基于您在问题中发布的代码-因此,如果您的真实代码不同,我的推理将是错误的。结果证明这不是编码问题,我使用了错误的列表。谢谢。