使用python读取json文件
团队,我的代码在下面的注释中与dict一起工作。现在,我想将其移动到file.json并从那里读取,保持逻辑不变。有什么提示吗?我如何用json表示下面的注释部分,并在字典中重新阅读 将python字典转换为json文件并在python中读取使用python读取json文件,json,python-2.7,list,dictionary,Json,Python 2.7,List,Dictionary,团队,我的代码在下面的注释中与dict一起工作。现在,我想将其移动到file.json并从那里读取,保持逻辑不变。有什么提示吗?我如何用json表示下面的注释部分,并在字典中重新阅读 将python字典转换为json文件并在python中读取 ''' source_cidr_name = { 'location1' : ("1.1.1.1/32", [22, 443]), 'location2' : ("2.2.2.2/32", [443])} ''' source_cidr_n
'''
source_cidr_name = {
'location1' : ("1.1.1.1/32", [22, 443]),
'location2' : ("2.2.2.2/32", [443])}
'''
source_cidr_name = {}
with open('/Users/code/dev/whitelist.json') as jf:
source_cidr_name = json.load(jf)
json如下所示,但我不知道如何表示端口22和443
{
“source_cidr_whitelist”:{“key1”:{“ip_subnet”:“1.1.1.1/32”},“key2”:{“ip_subnet”:“2.2.2.2/32”]}}JSON即
JavaScript对象标记
不支持在字符串和(
或)周围包含单引号在使用JSON(
加载时取消ARO列表/数组)
将字符串表示转换为对象(字典)
使用json.dumps()
可以处理元组/列表、单引号/双引号等,因为Python在内部将它们转换为正确有效的json。意思是说它将用于表示/环绕元组的(
)
转换为[
]
,并将用于表示/环绕字符串的'
转换为“
我的建议是解决这类问题
在将数据转储/写入JSON文件时,使用JSON.dumps()
从现有Python对象(如列表/字典(JSON)创建字符串
之后,如果您在以后的任何时候阅读相同的内容,则可以使用字符串中的json.loads()
或类似文件的对象中的json.loads()
轻松地将其转换为真正的Python对象列表/字典等
一个有助于理解
第一次尝试
>>s=''{'location1':[“1.1.1.1/32”,[22443],'location2':[“2.2.2.2/32”,[443]}'
>>>
“{'location1\':[“1.1.1.1/32”[22443],'location2\':[“2.2.2.2/32”[443]}”
>>>
>>>印刷品
{'location1':[“1.1.1.1/32”[22443],'location2':[“2.2.2.2/32”[443]}
>>>
>>>d=json.loads
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/cillar”/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/_init__.py”,第339行,加载
返回\u默认\u解码器。解码
文件“/usr/local/cillar”/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第364行,解码
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“/usr/local/cillar”/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第380行,原始解码
obj,end=self.scan_一次(s,idx)
ValueError:应为属性名称:第1行第2列(字符1)
>>>
第二次尝试
>
>>>s='''{
…“位置1”:(“1.1.1.1/32”[22443]),
…位置2:“(2.2.2.2/32),[443])”
>>>
>>>d=json.loads
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/cillar”/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/_init__.py”,第339行,加载
返回\u默认\u解码器。解码
文件“/usr/local/cillar”/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第364行,解码
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“/usr/local/cillar”/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第382行,原始解码
raise VALUERROR(“无法解码JSON对象”)
ValueError:无法解码任何JSON对象
>>>
>>>
最后
>>s=''{
…“位置1”:[“1.1.1.1/32”[22443],
…“位置2”:“[“2.2.2.2/32”,[443]]}”
>>>
>>>d=json.loads
>>>d
{u'location2':[u'2.2.2/32',[443]],u'location1':[u'1.1.1/32',[22443]}
>>>
>>>类型(d)
>>>
>>>d[‘位置2’]
[u'2.2.2/32',[443]]
>>>
>>>d['location2'][1][0]
443
>>>
请同时指出您的错误。我已经解决了问题并回答了。请检查并告知我您是否仍在挣扎,或者我的回答是否对您没有帮助。
>>> import json
>>>
>>> d = {
... 'location1' : ("1.1.1.1/32", [22, 443]),
... 'location2' : ("2.2.2.2/32", [443])}
>>>
>>> s = json.dumps(d, indent=4)
>>> print(s)
{
"location2": [
"2.2.2.2/32",
[
443
]
],
"location1": [
"1.1.1.1/32",
[
22,
443
]
]
}
>>>
>>> new_d = json.loads(s)
>>>
>>> new_d
{u'location2': [u'2.2.2.2/32', [443]], u'location1': [u'1.1.1.1/32', [22, 443]]}
>>>
>>> new_d['location2']
[u'2.2.2.2/32', [443]]
>>>
>>> new_d['location1']
[u'1.1.1.1/32', [22, 443]]
>>>
>>> new_d['location1'][0]
u'1.1.1.1/32'
>>> new_d['location1'][1]
[22, 443]
>>>
>>> new_d['location1'][1][0]
22
>>> new_d['location1'][1][1]
443
>>>
>>> # NEW (start from string)
...
>>> s = '''{
... 'location1' : ("1.1.1.1/32", [22, 443]),
... 'location2' : ("2.2.2.2/32", [443])}'''
>>> print(s)
{
'location1' : ("1.1.1.1/32", [22, 443]),
'location2' : ("2.2.2.2/32", [443])}
>>>
>>> s = '''{'location1' : ["1.1.1.1/32", [22, 443]],'location2' : ["2.2.2.2/32", [443]]}'''
>>> s
'{\'location1\' : ["1.1.1.1/32", [22, 443]],\'location2\' : ["2.2.2.2/32", [443]]}'
>>>
>>> print(s)
{'location1' : ["1.1.1.1/32", [22, 443]],'location2' : ["2.2.2.2/32", [443]]}
>>>
>>> d = json.loads(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)
>>>
>>>
>>> s = '''{
... "location1" : ("1.1.1.1/32", [22, 443]),
... "location2" : ("2.2.2.2/32", [443])}'''
>>>
>>> d = json.loads(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
>>>
>>>
>>> s = '''{
... "location1" : ["1.1.1.1/32", [22, 443]],
... "location2" : ["2.2.2.2/32", [443]]}'''
>>>
>>> d = json.loads(s)
>>> d
{u'location2': [u'2.2.2.2/32', [443]], u'location1': [u'1.1.1.1/32', [22, 443]]}
>>>
>>> type(d)
<type 'dict'>
>>>
>>> d['location2']
[u'2.2.2.2/32', [443]]
>>>
>>> d['location2'][1][0]
443
>>>