鱼C论坛

 找回密码
 立即注册
查看: 1854|回复: 7

[已解决]字符串内容为字典类型用“” 与 ‘’ 定义数剧的区别,‘’为啥会报错

[复制链接]
发表于 2023-8-2 02:22:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 以下展示了Python如何解码JSON对象
# jsonData = '{'a':1,'b':2,'c':3,'d':4,'e':5}'  这句代码报错
jsonData1 = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
jsonData1_2 = '[{"a":1,"b":2,"c":3,"d":4,"e":5}]'

text1 = json.loads(jsonData1)
text1_2 = json.loads(jsonData1_2)
print(text1)
print(text1_2)

jsonData = '{'a':1,'b':2,'c':3,'d':4,'e':5}'  这句代码报错

jsonData1 = '{"a":1,"b":2,"c":3,"d":4,"e":5}'


请问为什么' '定义的字典会报错啊,我按照网上的例子打的程序,谢谢
最佳答案
2023-8-2 07:35:04
在Python中,使用单引号(')和双引号(")都可以用来定义字符串。然而,当你在定义字典时,需要确保字符串的外层引号与字典的键使用的引号不同。

在你提供的代码中,jsonData 的定义使用了单引号来包裹整个字符串,但是字典的键使用了单引号。这导致了语法错误,因为在单引号字符串内部包含了单引号字符。

要修复这个问题,你可以使用转义字符(\)来表示引号,或者在外层使用双引号来定义字符串。下面是两种修正方法的示例:
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'

或者
jsonData = '{'a':1,'b':2,'c':3,'d':4,'e':5}'

这样,你就可以正确地定义一个包含字典内容的字符串了。

希望能解答你的疑问!如果还有其他问题,请随时提问。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-2 02:22:17 | 显示全部楼层
在Python中,字典是由键值对组成的数据结构,键和值之间使用冒号 ":" 分隔,整个字典使用花括号 "{}" 包围。而字符串是由引号包围的一串字符。

在你提供的代码中, jsonData1  是一个合法的JSON格式字符串,它用双引号 " " 定义键和值,因此它可以被成功解码为一个Python字典对象。而 jsonData  使用的是单引号 ' ' 来定义键和值,导致它不符合JSON的规范,因此会导致解码时报错。

要修正这个问题,你应该使用双引号 " " 来定义键和值,就像  jsonData1  中那样。修改后的代码如下:
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
jsonData1 = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
jsonData1_2 = '[{"a":1,"b":2,"c":3,"d":4,"e":5}]'

import json

text = json.loads(jsonData)
text1 = json.loads(jsonData1)
text1_2 = json.loads(jsonData1_2)

print(text)
print(text1)
print(text1_2)

这样,你的代码就能够正确地将JSON格式的字符串解码为对应的Python数据结构,而不再报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 07:35:04 | 显示全部楼层    本楼为最佳答案   
在Python中,使用单引号(')和双引号(")都可以用来定义字符串。然而,当你在定义字典时,需要确保字符串的外层引号与字典的键使用的引号不同。

在你提供的代码中,jsonData 的定义使用了单引号来包裹整个字符串,但是字典的键使用了单引号。这导致了语法错误,因为在单引号字符串内部包含了单引号字符。

要修复这个问题,你可以使用转义字符(\)来表示引号,或者在外层使用双引号来定义字符串。下面是两种修正方法的示例:
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'

或者
jsonData = '{'a':1,'b':2,'c':3,'d':4,'e':5}'

这样,你就可以正确地定义一个包含字典内容的字符串了。

希望能解答你的疑问!如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 08:01:54 From FishC Mobile | 显示全部楼层
Mike_python小 发表于 2023-8-2 07:35
在Python中,使用单引号(')和双引号(")都可以用来定义字符串。然而,当你在定义字典时,需要确保字符串 ...

转义字符'/'没有用到啊,修改格式没改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 08:04:38 | 显示全部楼层
爬虫121 发表于 2023-8-2 05:01
转义字符'/'没有用到啊,修改格式没改

论坛好像会吞转义字符

再解释一遍把
jsonData = '{'a':1,'b':2,'c':3,'d':4,'e':5}'
这个代码用的都是单引号也就是' 你有这么多单引号,编辑器就分不清你的单引号到底是和哪个单引号配对,所以需要用到外层双引号,内层单引号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 08:05:10 | 显示全部楼层
爬虫121 发表于 2023-8-2 05:01
转义字符'/'没有用到啊,修改格式没改

要想用单引号的话,参考这个代码
jsonData = '{\'a\':1,\'b\':2,\'c\':3,\'d\':4,\'e\':5}'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 08:06:03 From FishC Mobile | 显示全部楼层
Mike_python小 发表于 2023-8-2 08:04
论坛好像会吞转义字符

再解释一遍把

最佳答案给你,解释了原因,给出两种解决方案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 08:07:35 From FishC Mobile | 显示全部楼层
注意!转义字符串的,解决程序在楼下,最佳答案里面没显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表