2011-12-24 2 views
0

У меня есть файл py с использованием Qt Designer, у меня есть combobox, и я читаю из файла csv. Если выбор combobox находится в файле, он что-то печатает.PyQt: Как определить, какая кодировка используется?

В верхней части сценария он говорит, что: # -*- coding: utf-8 -*-

Таким образом, ошибка я получаю это:

PyQt4.QtCore.QString(u'choice') is not in list 

«выбор», конечно, в list.I полагает, что ее кодирование проблема, но это все, что я получил.

u'choice '- это строка и список содержит строки.

Это, как я добавить элементы в список:

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

Любые идеи Спасибо.

+0

И какое значение является PyQt4.QtCore.QString (u'choice ')? Что такое «список» (предположительно не встроенный список типов)? Какое точное сообщение об ошибке вы получили? Какова была строка кода, которую вы выполняли? –

+0

вставьте фрагмент, в который вы добавляете значения в список – soulcheck

ответ

0

Это не имеет никакого отношения к кодировкам.

ошибка происходит просто потому, что нет строк в списке чтения из файла 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 возвращает список строк для каждой строки в файле.

+0

Список2 - это список строк, а не список списков строк, если это то, что вы имеете в виду. Итак, вы говорите, что в моем списке2 нет строк? Я немного здесь потерялся. – GiannisIordanou

+0

В вашем коде 'list1' является' csv.reader', который является файлоподобным объектом, который анализирует файлы csv, по очереди. В цикле 'for'' 'i' будет список строк, представляющих строку. Поэтому 'list2' становится списком, содержащим строки _lists_. Следовательно, в 'list2' нет строк, только списки (строк). Конечно, мои рассуждения полностью основаны на коде, который вы опубликовали в своем вопросе, поэтому, если ваш код _real_ отличается, мои рассуждения будут неправильными. – ekhumoro

+0

Оказывается, это не проблема с кодировкой, я использовал неправильный список. Спасибо. – GiannisIordanou

Смежные вопросы