如何在PySide2中将QByteArray转换为Python字符串

12

我有一个名为roleNamePySide2.QtCore.QByteArray对象,我通过对Python字符串进行编码得到了它:

propName = metaProp.name() // this is call of [const char *QMetaProperty::name() ](https://doc.qt.io/qt-5/qmetaproperty.html#name)
// encode the object
roleName = QByteArray(propName.encode())
print(roleName) // this gives b'myname'
// now I would like to get just "myname" without the "b" 
roleString = str(roleName)
print(roleString) // this gives the same output as above

我怎样才能获取我的解码字符串?


@ekhumoro 是的,那解决了问题。您是否想把您的评论转化为答案,这样我就可以将此问题标记为已解决? - reckless
1个回答

19
在Python3中,将类似于字节的对象转换为文本字符串时,必须指定编码。在PySide/PyQt中,这与bytes的情况完全相同,也适用于QByteArray。如果不指定编码,str()的行为类似于repr()
>>> ba = Qt.QByteArray(b'foo')
>>> str(ba)
"b'foo'"
>>> b = b'foo'
>>> str(b)
"b'foo'"

有几种不同的方法可以将其转换为文本字符串:

>>> str(ba, 'utf-8') # explicit encoding
'foo'
>>> bytes(ba).decode() # default utf-8 encoding
'foo'
>>> ba.data().decode() # default utf-8 encoding
'foo'

最后一个示例是针对QByteArray的,但前两个示例应该适用于任何类似于字节的对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接