You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何无反斜杠地美化输出JSON?

美化打印Script标签内的JSON并避免反斜杠

问题场景

执行以下代码获取script标签内的JSON时,输出为压缩状态:

from bs4 import BeautifulSoup
import json

html_doc = """
<script id="js-context" type="application/json">{"is_completed": false, "is_bookmarked": false, "api_article_bookmark_url": "/api/v1/articles/python-pretty-print/bookmark/", "api_article_completion_status_url": "/api/v1/articles/python-pretty-print/completion_status/"}</script>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.find('script').get_text())

输出结果:

{"is_completed": false, "is_bookmarked": false, "api_article_bookmark_url": "/api/v1/articles/python-pretty-print/bookmark/", "api_article_completion_status_url": "/api/v1/articles/lorem-ipsum/"}

尝试直接用json.dumps()格式化时,输出出现大量转义反斜杠:

print(json.dumps(soup.find('script').get_text(), indent=4))

输出结果:

"{\"is_completed\": false, \"is_bookmarked\": false, \"api_article_bookmark_url\": \"/api/v1/articles/python-pretty-print/bookmark/\", \"api_article_completion_status_url\": \"/api/v1/articles/lorem-ipsum/\"}"

解决方法

问题根源是直接将JSON字符串传入json.dumps(),它会把字符串当作普通文本进行转义,而非解析为JSON对象。正确流程是:

  • 先获取script标签内的JSON文本
  • 用json.loads()将文本解析为Python字典/列表
  • 再用json.dumps()对解析后的对象进行格式化输出

修正后的代码:

from bs4 import BeautifulSoup
import json

html_doc = """
<script id="js-context" type="application/json">{"is_completed": false, "is_bookmarked": false, "api_article_bookmark_url": "/api/v1/articles/python-pretty-print/bookmark/", "api_article_completion_status_url": "/api/v1/articles/python-pretty-print/completion_status/"}</script>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# 获取JSON文本内容
json_text = soup.find('script').get_text()
# 解析为Python数据结构
json_data = json.loads(json_text)
# 格式化打印
print(json.dumps(json_data, indent=4))

执行后输出美化后的无反斜杠JSON:

{
    "is_completed": false,
    "is_bookmarked": false,
    "api_article_bookmark_url": "/api/v1/articles/python-pretty-print/bookmark/",
    "api_article_completion_status_url": "/api/v1/articles/python-pretty-print/completion_status/"
}

内容的提问来源于stack exchange,提问作者Arete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:26:26