如何在python中将unicode字符(\ u00a3)转换为人类可读的字符串(£)

时间:2018-09-26 06:29:07

标签: python-2.7

我有一种方法可以从第三方接收类似这样的数据

def func(**kwagrs):
    print kwagrs

输出
{'payload':u'{“ id”:“ 50b4f4b3e319586b10230f68d21f5edb”,“ data”:{“ message”:“ message is \\ u00a3 150 \\ u2192 \\ u00c5 \\ u25024 \\ u00e9”,“ length”: 47}}'}

如何在python中将\\ u00a3转换为£ 另外,您会注意到有效负载的值类型是Unicode而不是字典或JSON
我试图在StackOverflow中找到类似的问题,但没有找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

借助ValueError: unichr() arg not in range(0x10000) (narrow Python build),我来到了

import struct
def unichar(i):
    try:
        return unichr(i)
    except ValueError:
        return struct.pack('i', i).decode('utf-32')

def func(arg):
    msg = args['payload']['data']['message']
    # msg = 'message is \\u00a3 150 \\u2192\\u00c5\\u25024\\u00e9'
    print ' '.join(''.join([unichar(int(ch, 16)) for ch in chunk.split('\\u')[1:]]) if chunk.startswith('\\u') else
    chunk for chunk in msg.split(' '))

func({'payload':{'data':{'message':"message is \\u00a3 150 \\u2192\\u00c5\\u25024\\u00e9"}}})

如果运行上面的代码,我们将得到 150英镑→Åé的消息。 注意:我们可能有更好的解析代码...