这是我的第464篇原创文章。

一、引言

结论先行

  • str({"a": "1"}) 得到的是 Python 字典的字符串表示,外层是 单引号,内容符合 Python 语法:'{"a": "1"}'

  • """{"a": "1"}""" 得到的是 JSON 字符串字面量,外层是 双引号,内容符合 JSON 语法:{"a": "1"}

二、逐步拆解

2.1 str({"a": "1"})

类型:Python 字典 → 调用内置 str() 转换。

结果:Python 的 repr 风格 字符串,外层单引号,内部键值用单引号包裹(如果键或值是字符串)。

示例:

>>> str({"a": "1"})
"{'a': '1'}"  # 注意外层单引号和内部单引号

2.2 """{"a": "1"}"""

类型:三引号字符串字面量,内容直接写死为 JSON 格式。

结果:纯文本,外层无引号,内部键值用双引号(符合 JSON 规范)。

示例:

>>> """{"a": "1"}"""
'{"a": "1"}'  # 注意外层无引号,内部双引号

2.3关键区别表

图片

2.4 验证代码

验证代码

import json

# 1. str(dict) 的结果
py_str = str({"a": "1"})
print(py_str)          # {'a': '1'}
print(json.loads(py_str))  # 报错:JSON 必须双引号

# 2. 三引号字符串
json_str = """{"a": "1"}"""
print(json_str)        # {"a": "1"}
print(json.loads(json_str))  # 成功解析:{'a': '1'}

2.5 一句话总结

str(dict) 是 Python 的自描述字符串,而 """{"a": "1"}""" 是 手写 JSON 字符串,二者引号方向和合法性完全不同。

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

更多推荐