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
456

给定的有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估計你也知道的,我這個實現也就是給你看一下,都差不多的原理,就是回調

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!