gpt4 book ai didi

python - QTextBrowser 无法正确显示反斜杠字符

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:45 33 4
gpt4 key购买 nike

我正在创建一个小部件,它将以一种漂亮的格式显示 XML 字符串。为此,我使用 QXmlStreamReaderQXmlStreamWriter (基于 Format XML file in c++ or Qt 的答案)并将文本提供给 QTextBrowser :

message = "<person><name>John</name><surname>Smith</surname><hobbies><sport>football</sport><sport>tenis</sport><activity>dancing</activity></hobbies></person>"
byteArray = QByteArray()
xmlReader = QXmlStreamReader(message)
xmlWriter = QXmlStreamWriter(byteArray)
xmlWriter.setAutoFormatting(True)
while (not xmlReader.atEnd()):
xmlReader.readNext();
if (not xmlReader.isWhitespace()):
xmlWriter.writeCurrentToken(xmlReader)
prettyMessage = str(byteArray.data())
textBrowser.setText(prettyMessage)

但是生成的文本不会将 \n 转换为新行:

enter image description here

如果我手动输入一个包含 \n 的字符串,它们会被转换为新行:

textBrowser.setText("1\n2\n3\n4")

enter image description here

我已经检查了 byteArray 的确切内容,以确保 \n 作为一个字符传递,而不是作为两个单独的“\”和“n”传递字符:

for i in range(0, byteArray.size()):
sys.stdout.write(byteArray.at(i))

按预期打印出 XML 字符串:

<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>John</name>
<surname>Smith</surname>
<hobbies>
<sport>football</sport>
<sport>tenis</sport>
<activity>dancing</activity>
</hobbies>
</person>
<小时/>

我正在使用 python 3.6 和 PyQt5

最佳答案

您需要解码QByteArray中的数据。这可以使用 QTextStream 来完成,然后您可以轻松设置正确的编解码器:

    byteArray = QByteArray()
xmlReader = QXmlStreamReader(message)
xmlWriter = QXmlStreamWriter(byteArray)
xmlWriter.setAutoFormatting(True)
while (not xmlReader.atEnd()):
xmlReader.readNext();
if (not xmlReader.isWhitespace()):
xmlWriter.writeCurrentToken(xmlReader)

stream = QTextStream(byteArray)
stream.setCodec(xmlWriter.codec())
textBrowser.setText(stream.readAll())

关于python - QTextBrowser 无法正确显示反斜杠字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47041212/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com