如何将由列表组成的字符串转换为实lis

2024-09-27 01:22:25 发布

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

现在我有了unicode对象

u'[
    [
        [
            ["Hello","w_0","w_0,w_10",1],
            [".","w_1","",0," "],
            ["This","w_2","",0," "],
        ]
        [
            ["\u4f60\u597d","w_10","w_0,w_10",1],
            ["\uff0c","w_11","",0],
            ["\u6211","w_12","",0],
        ],
        "http://www.kekenet.com/menu/201206/187574.shtml",154191
    ]
]'

如何将其转换为列表对象,如

[
    [
        [
            ["Hello","w_0","w_0,w_10",1],
            [".","w_1","",0," "],
            ["This","w_2","",0," "],
        ],
        [
            ["\u4f60\u597d","w_10","w_0,w_10",1],
            ["\uff0c","w_11","",0],
            ["\u6211","w_12","",0],
        ],
        "http://www.kekenet.com/menu/201206/187574.shtml",154191
    ],
]

Tags: 对象comhttphello列表wwwunicodethis
2条回答

可以使用^{}安全地计算包含Python文本的字符串。你知道吗

from ast import literal_eval

a = '["Hello", "World!", 2]'
b = literal_eval(a)
# ["Hello", "World!", 2]

请注意,字符串只能包含以下内容:字符串、字节、数字、元组、列表、dict、集合、布尔值和None(取自文档here

在这种情况下,您很幸运,因为您的字符串似乎是有效的JSON,所以您可以执行以下操作:

from simplejson import json

value = u'[
    [
        [
            ["Hello","w_0","w_0,w_10",1],
            [".","w_1","",0," "],
            ["This","w_2","",0," "],
        ]
        [
            ["\u4f60\u597d","w_10","w_0,w_10",1],
            ["\uff0c","w_11","",0],
            ["\u6211","w_12","",0],
        ],
        "http://www.kekenet.com/menu/201206/187574.shtml",154191
    ]
]'

array_value = json.loads(value)

为此,它依赖于使用双引号字符串的字符串(根据json规范),即["Hello","w_0","w_0,w_10",1]而不是['Hello','w_0','w_0,w_10',1]

与使用eval的解决方案相比,它的优点是更安全。。。如果这个值来自用户输入或其他不受信任的代码,那么使用eval是非常危险的,而json是安全的。你知道吗

编辑:
正如已经指出的,发布的字符串不是有效的json。。。但我不知道是不是打字错误?你知道吗

问题是:

value = u'[
    [
        [
            ["Hello","w_0","w_0,w_10",1],
            [".","w_1","",0," "],
            ["This","w_2","",0," "],
        ] <  should be a comma here
        [
            ["\u4f60\u597d","w_10","w_0,w_10",1],

相关问题 更多 >

    热门问题