如何在 PySide2 中将 QByteArray 转换为 python 字符串
How to convert a QByteArray to a python string in PySide2
我有一个名为 roleName
的 PySide2.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
如何取回解码后的字符串?
在Python3中,将类字节对象转换为文本字符串时必须指定编码。在 PySide/PyQt 中,这适用于 QByteArray
的方式与它适用于 bytes
的方式相同。如果您不指定和编码,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
,但前两个示例适用于任何类似字节的对象。
我有一个名为 roleName
的 PySide2.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
如何取回解码后的字符串?
在Python3中,将类字节对象转换为文本字符串时必须指定编码。在 PySide/PyQt 中,这适用于 QByteArray
的方式与它适用于 bytes
的方式相同。如果您不指定和编码,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
,但前两个示例适用于任何类似字节的对象。