擅长:python、mysql、java
<p>首先,<code>"string_escape"</code>和{<cd2>},它们都不能解码给定的字符串。第一个读取作为bytestring转义的bytestring,并将其解码为bytestring。第二个读取转义并保存在bytestring中的unicode字符串,因此它无法读取输入的unicode对象,至少不能读取其中包含unicode字符的对象。在</p>
<p>我相信您在这里给出的原始字符串是错误的,您实际上想要<code>s.decode('unicode_escape')</code>作为来自源代码的实际字符串。在</p>
<p>如果我错了,你能做的最好的方法就是用<code>re</code>手动转义任何未转义的单引号,在它周围加上额外的单引号并使用<code>ast.literal_eval</code>。在</p>
<pre><code>def substitute(match):
if len(match.group(1)) % 2 == 1:
return match.group()
else:
return ur"%s\%s" % (match.group(1), match.group(2))
ast.literal_eval("'%s'" % re.sub(ur"(\\+)(')", substitute, s))
</code></pre>
<p>第三种选择是字符串需要传递给<code>ast.literal_eval</code>,而不需要您做任何额外的工作。这三者中的哪一个取决于你到底拥有什么样的字符串。在</p>
<p>JSON可能是我怀疑的另一个对象。你应该给出一个你得到的字符串的例子,以及你从哪里得到的以及如何得到它。在</p>