Python 修复被(某些)转义反斜杠打断的unicode字符串

Python 修复被(某些)转义反斜杠打断的unicode字符串,python,string,unicode,Python,String,Unicode,我在看这个问题: 并筛选对类似问题的回答:, , 当我意识到没有一个答案能真正解决这个问题时。 假设我有一个断开的unicode字符串,它包含转义反斜杠和转义字符: my_str = '\\xa5\\xc0\\xe6aK\xf9\\x80\\xb1\\xc8*\x01\x12$\\xfbp\x1e(4\\xd6{;Z' 打印时,某些字符会计算: print(my_str) \xa5\xc0\xe6aKù\x80\xb1\xc8*☺↕$\xfbp▲(4\xd6{;Z 我可以像这样手动修复它:

我在看这个问题:

并筛选对类似问题的回答:, ,

当我意识到没有一个答案能真正解决这个问题时。 假设我有一个断开的unicode字符串,它包含转义反斜杠和转义字符:

my_str = '\\xa5\\xc0\\xe6aK\xf9\\x80\\xb1\\xc8*\x01\x12$\\xfbp\x1e(4\\xd6{;Z'
打印时,某些字符会计算:

print(my_str)
\xa5\xc0\xe6aKù\x80\xb1\xc8*☺↕$\xfbp▲(4\xd6{;Z
我可以像这样手动修复它:

my_str = repr(my_str)
my_str
"'\\\\xa5\\\\xc0\\\\xe6aKù\\\\x80\\\\xb1\\\\xc8*\\x01\\x12$\\\\xfbp\\x1e(4\\\\xd6{;Z'"
my_str = my_str.replace('\\\\','\\')
print(my_str)
'\xa5\xc0\xe6aKù\x80\xb1\xc8*\x01\x12$\xfbp\x1e(4\xd6{;Z'
但此时,我必须手动复制打印结果并将其粘贴到变量中,以完成修复:

my_str = '\xa5\xc0\xe6aKù\x80\xb1\xc8*\x01\x12$\xfbp\x1e(4\xd6{;Z'
print(my_str)
¥ÀæaKù±È*☺↕$ûp▲(4Ö{;Z

如何在不复制和粘贴的情况下执行此操作?

去掉单引号,编码以获取字节,然后使用“unicode转义”进行解码:

印刷品:

'\xa5\xc0\xe6aKù\x80\xb1\xc8*\x01\x12$\xfbp\x1e(4\xd6{;Z'
¥ÀæaKù±È*$ûp(4Ö{;Z
我在对已接受答案的评论中提到。但我觉得我应该在这里包含一段代码:

结果(Python 3):


啊,这是有道理的。。我想知道为什么不同。我还在这里找到了另一个有效的答案(使用
ast.literal\u eval
):
my_str.strip(“”).encode()。。在Python2.7中发生。不过,literal_eval可以在2.7中工作。这也取决于您的终端。我粘贴了OP输出字符串。我不应该这么做:)我已经从OP original inputast开始编辑了。literal_eval给出了一个稍微不同的结果
'\xa5\xc0\xe6aKù\x80\xb1\xc8*\x01\x12$\xfbp\x1e(4\xd6{;Z'
¥ÀæaKù±È*$ûp(4Ö{;Z
from ast import literal_eval

my_str = '\\xa5\\xc0\\xe6aK\xf9\\x80\\xb1\\xc8*\x01\x12$\\xfbp\x1e(4\\xd6{;Z'
my_str = repr(my_str)
my_str = my_str.replace('\\\\','\\')
print(literal_eval(my_str))
¥ÀæaKù±È*☺↕$ûp▲(4Ö{;Z