Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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文件_Json_Python 2.7_List_Dictionary - Fatal编程技术网

使用python读取json文件

使用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

团队,我的代码在下面的注释中与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_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
>>>