python - 如何获得array("name" => "peter", "image_list" => array( 0 => array("src" => "http://www.abc.com/1.jpg", "href" => "
高洛峰
高洛峰 2017-04-17 13:08:08
0
2
482

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

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
刘奇

笨办法:

获取name值

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

获取image_list值

  1. 先用上面的方法获取array(0 => ....) 字符串
  2. 然后用正则split将array分成数组
  3. 然后用上面的方法取到各个值
阿神
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估计你也知道的,我这个实现也就是给你看一下,都差不多的原理,就是回调

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板