如何使用 'Object' 类型变量将特殊字符作为字符串?
How to work 'Object' type variable with special character as string?
我正在对 Qt 应用程序中的文本 UI 元素进行一些测试。它有一个特殊的字符。当我尝试使用 Squish 获取文本时,接收到的值类型是 Object。最终目标是对其进行一些操作,例如将其打印出来或将其与另一个字符串进行比较。把特殊字符去掉,只看剩余的值也完全没问题。
为了找出我可以用这个值做什么,我尝试了以下方法:
value.split('')
语法错误:不明确的重载 'split(str)'。考生:
QString::split(const QString & sep)
QString::split(QChar sep)
str(value)
UnicodeEncodeError: 'ascii' 编解码器无法对位置 2 中的字符 u'\xb0' 进行编码:序号不在范围内 (128)
value.encode('utf-8')
AttributeError: 对象没有任何属性
unicode(value, error='replace')
TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到对象
通常在其他情况下,我可以很好地使用 str(),因为没有特殊字符。这是来自 Python 2,升级并不是一个真正的选择,因为它是一个相当大的项目并且需要时间。如果无论如何都可以做到,请给我一些建议。谢谢。
value.decode("ascii", 错误="ignore").encode()
所以在该值上使用 dir()
我发现可以使用 QString 函数。经过一些更多的试验后,我发现 QString &QString::replace(int position, int n, const QChar *unicode, int size)
是我可以使用的唯一方法,而不会 运行 进入错误模糊重载。然后只需将特殊字符替换掉并使用剩余的值。
我无法使用 Qt 6 的 Squish 重现此问题。5.x、Python 2.7:
import os
def main():
startApplication("%s/examples/qt/addressbook/addressbook" % os.getenv("SQUISH_PREFIX"))
o = waitForObject({"type": "MainWindow"})
o.windowTitle = "ä"
str(o.windowTitle)
(作为答案发布,因为评论似乎不支持多行,但并不意味着作为答案。)
尝试用 Qt 解码值:
value.toUtf8().constData()
我正在对 Qt 应用程序中的文本 UI 元素进行一些测试。它有一个特殊的字符。当我尝试使用 Squish 获取文本时,接收到的值类型是 Object。最终目标是对其进行一些操作,例如将其打印出来或将其与另一个字符串进行比较。把特殊字符去掉,只看剩余的值也完全没问题。
为了找出我可以用这个值做什么,我尝试了以下方法:
value.split('')
语法错误:不明确的重载 'split(str)'。考生: QString::split(const QString & sep) QString::split(QChar sep)
str(value)
UnicodeEncodeError: 'ascii' 编解码器无法对位置 2 中的字符 u'\xb0' 进行编码:序号不在范围内 (128)
value.encode('utf-8')
AttributeError: 对象没有任何属性
unicode(value, error='replace')
TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到对象
通常在其他情况下,我可以很好地使用 str(),因为没有特殊字符。这是来自 Python 2,升级并不是一个真正的选择,因为它是一个相当大的项目并且需要时间。如果无论如何都可以做到,请给我一些建议。谢谢。
value.decode("ascii", 错误="ignore").encode()
所以在该值上使用 dir()
我发现可以使用 QString 函数。经过一些更多的试验后,我发现 QString &QString::replace(int position, int n, const QChar *unicode, int size)
是我可以使用的唯一方法,而不会 运行 进入错误模糊重载。然后只需将特殊字符替换掉并使用剩余的值。
我无法使用 Qt 6 的 Squish 重现此问题。5.x、Python 2.7:
import os
def main():
startApplication("%s/examples/qt/addressbook/addressbook" % os.getenv("SQUISH_PREFIX"))
o = waitForObject({"type": "MainWindow"})
o.windowTitle = "ä"
str(o.windowTitle)
(作为答案发布,因为评论似乎不支持多行,但并不意味着作为答案。)
尝试用 Qt 解码值:
value.toUtf8().constData()