如何将python对象转换为非scii字符不变的字符串?

2024-05-28 23:48:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个物体像:

obj1 = {
    'k1' : 'v1', 
    'k2' : [
        {
            'k21' : '中文字符'
        }
    ]
}

我想把它转换成一个字符串,比如:

'''{ 'k1' : 'v1', 'k2' : [ { 'k21' : '中文字符' } ] } '''

使用str()给我这个:

'''{'k2': [{'k21': '\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6'}], 'k1': 'v1'}'''

注意“\xe4”有四个字符。我猜str()只是调用repr()。你知道吗

一种解决方案是遍历对象的所有键并递归地处理它。我想知道有没有其他的方法来实现它。例如将“\xe4”转换为“cifine”或直接将obj1转换为例外结果。你知道吗

谢谢!你知道吗


Tags: 字符串k2k1字符物体v1strobj1
1条回答
网友
1楼 · 发布于 2024-05-28 23:48:41

就像@Cyber建议的那样,使用json将是一个选项,如下所示:

import json

In [11]: obj1 = {
    ...:     'k1' : 'v1', 
    ...:     'k2' : [
    ...:         {
    ...:             'k21' : '中文字符'
    ...:         }
    ...:     ]
    ...: }
         # remember to set ensure_ascii=False
In [12]: s = json.dumps(obj1, ensure_ascii=False)

In [13]: print s
{"k2": [{"k21": "中文字符"}], "k1": "v1"}

我在Python2.7.8上

相关问题 更多 >

    热门问题