Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python json.loads不会保持双引号完整_Python_Json_String - Fatal编程技术网

Python json.loads不会保持双引号完整

Python json.loads不会保持双引号完整,python,json,string,Python,Json,String,当我使用json.loads时,它将双引号转换为单引号。 这让我很困扰,有人能帮我澄清一下吗 >>> import simplesjson as json >>> string = '{"created_at": "2012/02/05 04:03:50 -0800"}' >>> json.loads(string,'utf-8') {'created_at': '2012/02/05 04:03:50 -0800'} 我知道这是一种正常的

当我使用
json.loads
时,它将双引号转换为单引号。 这让我很困扰,有人能帮我澄清一下吗

>>> import simplesjson as json
>>> string = '{"created_at": "2012/02/05 04:03:50 -0800"}'
>>> json.loads(string,'utf-8')
{'created_at': '2012/02/05 04:03:50 -0800'}
我知道这是一种正常的行为,我可以很容易地调整我的代码。但考虑是否可以实现同样的目标?

首先:引用不是价值的一部分。它们是语法的一部分,向解析器发出已定义字符串的信号

JSON只支持双引号,但在Python中,可以使用单引号或双引号定义字符串。在回显字符串值时,Python通过向您显示重新定义相同值的Python语法来反映该值。对于这种表示法,最好使用单引号。只有当值实际包含至少一个单引号且没有双引号时,才会使用双引号:

>>> "Normal strings are reflected with single quotes by Python"
'Normal strings are reflected with single quotes by Python'
>>> 'Single quote: \''
"Single quote: '"
>>> 'Single quote: \', and a double quote: \"'
'Single quote: \', and a double quote: "'
你所看到的是完全正常的行为。你不能改变这个;您看到的输出是一个调试工具。如果这是您想要更改的内容,请生成您自己的格式化程序

再次从Python结构生成JSON时,仅使用双引号生成有效的JSON输出:

>>> import json
>>> json_string = '{"created_at": "2012/02/05 04:03:50 -0800"}'
>>> json.loads(json_string)
{u'created_at': u'2012/02/05 04:03:50 -0800'}
>>> json.dumps(json.loads(json_string))
'{"created_at": "2012/02/05 04:03:50 -0800"}'
首先:引号不是值的一部分。它们是语法的一部分,向解析器发出已定义字符串的信号

JSON只支持双引号,但在Python中,可以使用单引号或双引号定义字符串。在回显字符串值时,Python通过向您显示重新定义相同值的Python语法来反映该值。对于这种表示法,最好使用单引号。只有当值实际包含至少一个单引号且没有双引号时,才会使用双引号:

>>> "Normal strings are reflected with single quotes by Python"
'Normal strings are reflected with single quotes by Python'
>>> 'Single quote: \''
"Single quote: '"
>>> 'Single quote: \', and a double quote: \"'
'Single quote: \', and a double quote: "'
你所看到的是完全正常的行为。你不能改变这个;您看到的输出是一个调试工具。如果这是您想要更改的内容,请生成您自己的格式化程序

再次从Python结构生成JSON时,仅使用双引号生成有效的JSON输出:

>>> import json
>>> json_string = '{"created_at": "2012/02/05 04:03:50 -0800"}'
>>> json.loads(json_string)
{u'created_at': u'2012/02/05 04:03:50 -0800'}
>>> json.dumps(json.loads(json_string))
'{"created_at": "2012/02/05 04:03:50 -0800"}'

这是正常的行为。Python字符串可以使用单引号和双引号。引号不是值的一部分。请记住,这些是内存中的对象,python向您显示的是对象的序列化文本版本,供用户查看,而不是对象本身。这在我的应用程序中很重要,这就是我问的原因。无论如何我都可以调整我的结果。不知道为什么会有这么多的反对票!!!!我想你们需要弄清楚什么样的问题需要否决。如果引用有影响,请解释原因,否则这里没有问题。Python将单引号和双引号视为可互换的,那么是什么引起了您的问题呢?我不知道为什么这会被否决……对于Python的新手来说,这是一个非常合理的问题,他们希望它遵守JSON行为,而且我也这么认为。精英主义态度的人怎么了??我必须将这个json数据从python服务器发送到其他需要json标准的应用程序,这种行为显然不符合标准。这是正常的行为。Python字符串可以使用单引号和双引号。引号不是值的一部分。请记住,这些是内存中的对象,python向您显示的是对象的序列化文本版本,供用户查看,而不是对象本身。这在我的应用程序中很重要,这就是我问的原因。无论如何我都可以调整我的结果。不知道为什么会有这么多的反对票!!!!我想你们需要弄清楚什么样的问题需要否决。如果引用有影响,请解释原因,否则这里没有问题。Python将单引号和双引号视为可互换的,那么是什么引起了您的问题呢?我不知道为什么这会被否决……对于Python的新手来说,这是一个非常合理的问题,他们希望它遵守JSON行为,而且我也这么认为。精英主义态度的人怎么了??我必须将这个json数据从python服务器发送到其他需要json标准的应用程序,这种行为显然不符合标准。我理解你上面的话。为了通过python SDK将数据插入MongoDB,数据需要采用dict格式。但是,在使用json.load插入时,引号上方的加载会造成错误(就像我的例子一样)。我可以稍微调整一下我的流程,但我想问问它是否可以完成not@Shrey:PyMongo允许您使用本机Python类型,并将为您在JSON之间进行编码。您不应该在那里使用
json.loads()
。@Martijn Pieters我也应该使用与Shrey相同的结构。将json作为单引号发送到ElasticSearch时出错。我该怎么解决呢?@horoyoio Elasticsearch不是PyMongo,Shrey没有同样的问题。单引号不是JSON语法的一部分。将字典发送到Elasticsearch时,将其重新编码为JSON。我理解上面的单词。为了通过python SDK将数据插入MongoDB,数据需要采用dict格式。但是,在使用json.load插入时,引号上方的加载会造成错误(就像我的例子一样)。我可以稍微调整一下我的流程,但我想问问它是否可以完成not@Shrey:PyMongo允许您使用本机Python类型,并将为您在JSON之间进行编码。您不应该在那里使用
json.loads()
。@Martijn Pieters我也应该使用与Shrey相同的结构。将json作为单引号发送到ElasticSearch时出错。我该怎么解决呢?@horoyoio Elasticsearch不是PyMongo,Shrey没有同样的问题。单引号不是JSON语法的一部分。将字典发送到Elasticsearch时,将其重新编码为JSON。