我遇到过需要将字符串转换为python中的字符串的情况。
s = "\\x80\\x78\\x07\\x00\\x75\\xb3"
print s #gives: \x80\x78\x07\x00\x75\xb3
我想要的是,给定字符串s,我可以在s中获得真正的字符存储。在这种情况下是" \ x80,\ x78,\ x07,\ x00,\ x75和\ xb3"(类似这样)�xu�。
答案 0 :(得分:4)
您可以使用string-escape
encoding(Python 2.x):
>>> s = "\\x80\\x78\\x07\\x00\\x75\\xb3"
>>> s.decode('string-escape')
'\x80x\x07\x00u\xb3'
使用unicode-escape
encoding(在Python 3.x中,需要先转换为字节):
>>> s.encode().decode('unicode-escape')
'\x80x\x07\x00u³'
答案 1 :(得分:0)
或者您可以根据字节值构建一个字符串,但可能并非全部都是"可打印的"取决于您的编码,例如:
# -*- coding: utf-8 -*-
s = "\\x80\\x78\\x07\\x00\\x75\\xb3"
r = ''
for byte in s.split('\\x'):
if byte: # to get rid of empties
r += chr(int(byte,16)) # convert to int from hex string first
print (r) # given the example, not all bytes are printable char's in utf-8
HTH,Edwin
答案 2 :(得分:0)
你可以简单地编写一个函数,获取字符串并返回转换后的表单!
类似的东西:
def str_to_chr(s):
res = ""
s = s.split("\\")[1:] #"\\x33\\x45" -> ["x33","x45"]
for(i in s):
res += chr(int('0'+i, 16)) # converting to decimal then taking the chr
return res
记得打印函数的返回值。
找出每一行做什么,运行该行,如果仍有问题评论它......我会回答