2013-12-05 4 views
0

Как использовать QTextStream для чтения первой строки в строке (прочитанной из файла раньше)?Использовать QTextStream для чтения первой строки в строке

streamin = QTextStream(str) 
line = streamin.readLine() 

Кажется, что этот код не работает.

+3

добавить контекст (более код), вы не встретите здесь оракул, который в состоянии сказать, что вы сделали неправильно. –

+0

Опять же, как предложил Марек, исправьте свой синтаксис и опубликуйте реальный код. – Huy

ответ

0

Класс QTextStream не принимает строки python напрямую. Для PyQt5, вы должны преобразовать строку в QByteArray первый:

>>> s = """\ 
... First Line 
... Second Line 
... Third Line 
... """ 
>>> ba = QtCore.QByteArray(s.encode('utf-8')) 
>>> ts = QtCore.QTextStream(ba) 
>>> ts.setCodec('utf-8') 
>>> ts.readLine() 
'First Line' 
+0

принятые ответные доказательства, что вы должны написать, что 'str' является строкой python. В любом случае, этот ответ немного сложный, [см. Эту страницу] (http://www.commandprompt.com/community/pyqt/x2068). Поэтому, чтобы исправить ваш код, этого должно быть достаточно: 'streamin = QTextStream (QString (str))' –

+0

@MarekR. Вы пропустили, что OP использует PyQt5. В PyQt5 нет QString, поэтому только QIODevice или QByteArray можно передать конструктору QTextStream. Конечно, ваше предложение будет работать с PyQt4. Лично я бы избегал всех осложнений и использовал модуль python [io] (http://docs.python.org/3/library/io.html#) для такого рода вещей. – ekhumoro

0

Я в основном собираюсь опубликовать фрагмент кода из Qt Documentation Site.

Еще лучше ... вот что-то от stackoverflow.

// Instead of feeding in stdin, you can feed in QFile - i.e. QIODevice 
QFile file("myfile"); 
// ... open file etc etc 
QTextStream stream(&file); 
QString line; 
line = stream.readLine(); 
+0

Это хорошо, но я хочу получить первую строку из строки, а не файла. – WangTao