【问题标题】:Processing escaped url strings within json using python使用python处理json中的转义url字符串
【发布时间】:2012-08-09 21:15:16
【问题描述】:

我正在访问一个返回 json 的服务,如下所示:

{
"A":"A value",
"B":{
      "B1":"B1 value",
      "B2":"B2 value"
    },
"C":{
               "c_url":"http:\/\/someurl:someport\/somefolder\/somefile",

    }
}

我想要做的是解析这个 json 并在键值对中获取文件夹的 url 和 somefile 部分。

所以,基本上,在我的脚本处理完 json 之后,它会以某种分隔方式在文件中输出 url 和 somefile。

文件处理上述提供的 json 后的输出将是:

url: http://someurl:someport/somefolder/somefile
file: somefile

我很确定 python 中有许多 json 解析器可以解析 json,但是我将如何处理已经用转义字符预处理的 url 字符串?我是否需要编写自己的 url-encoder 来去除 url 字符串中的转义字符?

另外,我需要标记 url 的各个组件以到达“文件”部分,是否有任何库可以提供帮助?

谢谢

【问题讨论】:

标签: python json parsing escaping url-parsing


【解决方案1】:

所以,根据http://www.quora.com/Why-does-the-cjson-Python-module-not-correctly-unescape-reverse-solidus-solidus

simplejson 应该能够处理这种“错误”的转义算法。考虑:

#!/usr/bin/env python
import simplejson

print simplejson.loads('"http:\/\/someurl:someport\/somefolder\/somefile"')

注意,simplejson 不是标准包,但可以通过easy_install 安装。

样本输出:

[85][23:35:24] vlazarenko@alluminium (~/tests) > python unescape.py 
http://someurl:someport/somefolder/somefile

【讨论】:

    【解决方案2】:

    您的示例 JSON 在“c_url”k-v 对之后不需要逗号。

    >>> import json
    >>> st = '{"A":"A value","B":{ "B1":"B1 value", "B2":"B2 value" },"C":{ "c
    _url":"http:\/\/someurl:someport\/somefolder\/somefile" }}'
    >>> json.loads(st)
    {u'A': u'A value', u'C': {u'c_url': u'http://someurl:someport/somefolder/somefile'}, u'B': {u'B1': u
    'B1 value', u'B2': u'B2 value'}}
    

    并且只获取 URL 的“somefile”部分:

    url.split('/')[url.count('/')]
    

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      相关资源
      最近更新 更多