如何在python中将字符串转换为字符串

时间:2016-03-14 08:41:29

标签: python string hex

我遇到过需要将字符串转换为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�。

3 个答案:

答案 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  

记得打印函数的返回值。

找出每一行做什么,运行该行,如果仍有问题评论它......我会回答