使用 QTextStream 读取字符串的第一行
Posted
技术标签:
【中文标题】使用 QTextStream 读取字符串的第一行【英文标题】:Use QTextStream to read the first line in a string 【发布时间】:2013-12-05 13:39:08 【问题描述】:如何使用QTextStream
读取字符串的第一行(之前从文件中读取)?
streamin = QTextStream(str)
line = streamin.readLine()
这段代码好像不行。
【问题讨论】:
添加一些上下文(更多代码),你不会在这里遇到oracle,它能够说出你做错了什么。 再次,就像 Marek 建议的那样,请更正您的语法并发布真实代码。 【参考方案1】: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'
【讨论】:
接受的答案证明你应该写str
是 python 字符串。无论如何,这个答案有点复杂,@ 987654323@。所以修复你的代码就足够了:streamin = QTextStream(QString(str))
@MarekR。您错过了 OP 正在使用 PyQt5。 PyQt5 中没有 QString,因此只能将 QIODevice 或 QByteArray 传递给 QTextStream 构造函数。当然,您的建议适用于 PyQt4。就个人而言,我会避免所有的复杂情况,并使用 python 的io 模块来处理这种事情。【参考方案2】:
我基本上会从Qt Documentation Site 发布一个sn-p 代码。
更好的是...这里也有来自*** 的内容。
// 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();
【讨论】:
很好,但我想从字符串而不是文件中获取第一行。以上是关于使用 QTextStream 读取字符串的第一行的主要内容,如果未能解决你的问题,请参考以下文章
在不使用专用计数器的情况下检查 QTextStream 读取的总行数
JDBC ODBC 和 4D 数据库:读取一行时,不发送列的第一个空格字符