对于Stack和Google中的类似问题,有很多答案,但所有这些似乎都无关紧要。我担心问题存在于问题中,但仍然需要解决方案。
代码:
print(type(comment))
print(comment)
结果:
<class 'str'>
\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e
如何将其转换为纯文本?
UPD。
print(comment[0])
返回
\
答案 0 :(得分:1)
一个答案中有两个答案:
如果你真的想快速解析它,你可以这样做:
import ast
s = ast.literal_eval('"' + comment.replace('"', '\\"') + '"')
s
将包含您想要的内容 - 它将处理字符串,就像您在代码中以这种方式编写它一样。
(这比实际的eval更安全,因为它不允许评论执行任何功能 - 但你仍然可以通过在评论中加入\"
来打破它
要正确处理它,你必须编写一个合适的词法分析器/解析器来逐字符地分析它。
但实际上,如果你最终得到那个字符串,之前的某些地方就出现了问题。你最终得到了一个带有转义unicode而不是实际内容的字符串。如果它来自您应用程序的某个地方,最好的方法是追溯到它的起源位置,并确保您不会在这种情况下最终处于这种状态。
答案 1 :(得分:0)
如果您在Python 3中使用str
开始,则需要编码为字节,然后使用unicode-escape
编解码器进行解码,以将这些文字转义码转换为Unicode:
comment = r'\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e'
print(type(comment))
print(comment)
print(comment.encode('ascii').decode('unicode-escape'))
输出:
<class 'str'>
\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e
Не указано