Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python3中将unicode代码字符串转换为纯文本。?_Python_Unicode - Fatal编程技术网

如何在Python3中将unicode代码字符串转换为纯文本。?

如何在Python3中将unicode代码字符串转换为纯文本。?,python,unicode,Python,Unicode,在Stack和Google上有一大堆类似问题的答案,但所有这些似乎都无关紧要。恐怕这个问题还在讨论之中,但仍然需要一个解决方案 守则: print(type(comment)) print(comment) 结果: <class 'str'> \u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e 返回 \ 两个答案合一: 如果您真的想快速解析,可以执行以下操作: import ast s = ast.literal_ev

在Stack和Google上有一大堆类似问题的答案,但所有这些似乎都无关紧要。恐怕这个问题还在讨论之中,但仍然需要一个解决方案

守则:

print(type(comment))
print(comment)
结果:

<class 'str'>
\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e
返回

\
两个答案合一:

如果您真的想快速解析,可以执行以下操作:

import ast
s = ast.literal_eval('"' + comment.replace('"', '\\"') + '"')
s
将包含您想要的内容-它将处理字符串,就像您以这种方式在代码中编写它一样

(这比实际评估更安全,因为它不允许注释执行任何函数-但您仍然可以通过在注释中包含
\“
来破坏注释)

但是,为了正确地处理它,您必须编写一个适当的lexer/parser来逐个字符地分析它


但实际上,如果您以该字符串结尾,那么以前的某个地方就出了问题。您以转义的unicode而不是实际内容结尾。如果该字符串来自应用程序中的某个地方,最好的方法是追溯到它的起源地,并确保您一开始不会出现这种情况。

从Python 3中的
str
开始,您需要编码为字节,然后使用
unicode转义
codec将这些文字转义码转换为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
Не указано

\u041d\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043e
Не указано

为了确定字符串实际包含的内容,您能否告诉我们
注释[0]
“\”
,还是
“\u41d?”“
?是“\”。“将其添加到主题中。你是想强调一下吗?”是的,我想是俄语文本。@KatShot我发布了答案。看一看,这就是你想要的吗?字符串直接来自俄语网站代码-我真的不知道他们是如何想出这种编码的,因为页面的一部分是纯俄语,而另一部分(同一页面)则是Unicode混乱。@Pradam For python2你需要使用
ast.literal\u eval('u“'+..
。原始问题是关于python3@KatShot我理解它来自外部源代码——我的意思是,它是如何从网站读取到您使用它并看到当前值的地方,进入您的代码的。我怀疑它从一开始就没有像这样被破坏。(没有看到代码,我当然可能错了)@viraptor首先,我通过浏览器中的“开发者工具”和“检查页面代码”导航页面。然后我使用请求获取页面的.text或.content-comment变量只是应用于r.text的几个.split函数的结果,没有应用逻辑或编码。谢谢,一个简单的解决方案!
<class 'str'>
\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e
Не указано