搜索

首页  >  问答  >  正文

python - 如何获得array("name" => "peter", "image_list" => array( 0 => array("src" => "http://www.abc.com/1.jpg", "href" => "

给定的有xml文件,在该xml文件中可以获得name image_list等数据,现在需要将这些数据按照问题中的格式写入日志中。现在是用python处理xml文件,我考虑用json格式化数据,但json格式化的数据形式是:

{
    "name":"peter",
    "image_list" :[
        {
            "src":"http://www.abc.com/1.jpg",
            "href":"#"
        }
    ]
}

请问应该如何操作才能获得标题中所给定的格式?

高洛峰高洛峰2770 天前489

全部回复(2)我来回复

  • 怪我咯

    怪我咯2017-04-17 13:10:08

    笨办法:

    获取name值

    1. 取到array("name" => "位置,为截取开始
    2. 取到开始位置的最近的引号位置,为截取结束,如果名称中有转义引号,需要判断引号前一位置是否为斜杠
    3. 截取取到name值

    获取image_list值

    1. 先用上面的方法获取array(0 => ....) 字符串
    2. 然后用正则split将array分成数组
    3. 然后用上面的方法取到各个值

    回复
    0
  • 阿神

    阿神2017-04-17 13:10:08

    object = {"name": "peter",
              "image_list": [{"src": "http://www.abc.com/1.jpg", "href": "#"}]}
    
    
    def format_dict(dic):
        content = []
        for k in dic:
            content.append('"' + k + '" => ' + call(dic[k]))
        return 'array(' + ",".join(content) + ')'
    
    
    def format_list(arr):
        content = []
        for i in range(len(arr)):
            content.append(str(i) + ' => ' + call(arr[i]))
        return 'array(' + ",".join(content) + ')'
    
    
    def call(obj):
        if type(obj) == dict:
            return format_dict(obj)
        elif type(obj) == list:
            return format_list(obj)
        elif type(obj) == str:
            return '"' + obj + '"'
        else:
            return str(obj)
    
    
    print(call(object))
    

    这玩意儿的格式其实就是php输出的,最好还是用php估计你也知道的,我这个实现也就是给你看一下,都差不多的原理,就是回调

    回复
    0
  • 取消回复