【问题标题】:Unable to convert string to Json in Python because of unicode characters由于 unicode 字符,无法在 Python 中将字符串转换为 Json
【发布时间】:2016-01-23 08:15:01
【问题描述】:

我在 Python 3.5 中有一个字符串,我想从中创建一个 Json 对象。但事实证明该字符串包含如下内容:

"saved_search_almost_max_people_i18n":"You are reaching your current limit of saved people searches. \\u003ca href=\\"/mnyfe/subscriptionv2?displayProducts=&family=general&trk=vsrp_ss_upsell\\"\\u003eLearn more >\\u003c/a\\u003e"

这些 un​​icode 字符使 json.loads 函数失败;实际上,如果我尝试在任何在线格式化程序中将字符串格式化为 Json,就会出现多个错误。

如您所见,我是一名 Python 新手,但我一直在寻找很多资源,但没有找到任何解决方案。 顺便说一句,String 来自一个 Beautifulsoup 操作:

soup = self.loadSoup(URL)
result = soup.find('code', id=TAG_TO_FIND)
rTxt=str(result)
j = json.loads(rTxt)

我看到的第一个错误(如果我更正这个错误,还有更多错误):

json.decoder.JSONDecodeError: Invalid \escape: line 1 column 858 (char 857)

谢谢大家。

【问题讨论】:

    标签: python json beautifulsoup web-crawler


    【解决方案1】:

    如果我理解正确,您正在尝试使用 Beautiful Soup 解析 HTML 文档,并从该文档中的特定 code 元素中提取 JSON 文本。

    如果是这样,下面这行是错误的:

    rTxt=str(result)
    

    在 Beautiful Soup 上调用 str() Tag 返回其 HTML 表示。相反,您需要 string 属性:

    rTxt=result.string
    

    【讨论】:

    • 实际上问题在于解析我得到的字符串(rTxt 中的那个)。它包含像\u003e这样的unicode字符,而json解析器不喜欢它们......
    • @vanderflo 你能转储和发布rTxt的内容吗?
    • 例如:"teamlink_enable_error_text_i18n":"TeamLink 搜索可以\xe2\x80\x99t 从这里启用。您可以从 \\u003ca href=\\"/settings/?trk= 启用它vsrp_tl_optin_fail\\"\\u003e设置页面\\u003c/a\\u003e"
    • @vanderflo 这根本不是有效的 JSON;它看起来像来自 JSON 文本的 sn-p。特别是字符串看起来像已呈现为 Python 字符串的 JSON 字符串,即 JSON 的 \u003c 中的反斜杠已被 Python 转义,得到 \\u003c。但即使你修复了转义,你也不应该能够解析它。
    • @vanderflo 你能把文件的 URL 贴一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多