2016-08-16 83 views
-1

我期待一个JSON味精变量与Python沿着这些线路进行解析,通过MQTT进来:的Python寻找在JSON

{"OPTION1": "0", "OPTION2": "50", "OPTION3": "0", "OPTION4": "0"} 

根据情况的不同,这些选项可能会或可能不会进行解析通过的Python进入JSON MSG,正因为如此,它可能最终寻找为:

{"OPTION1": "0", "OPTION3": "0", "OPTION4": "0"} 

并且因此跳过OPTION2和它完全值。

为了避免我的脚本borking了我,我就在想扫描如果选项是那里第一次,在设置前,像这样:

 if data['OPTION1']: 
       >do something here< 
     else: 
       continue 

然而,这似乎并没有工作,它想出:

File "listen-mqtt.py", line 28 
    continue 
SyntaxError: 'continue' not properly in loop 

任何帮助将非常感激!谢谢。

+1

'pass'就是你要找的(不是'继续') –

+0

'else'子句是不必要的。 https://docs.python.org/3/tutorial/controlflow.html?highlight=continue – tanglong

回答

2

如果您正在使用的if else 继续使用与循环工作: -

if data['OPTION1']: 
    >do something here< 
else: 
    pass 

继续与循环使用。你也可以尝试: -

for dataItem in data: 
    if "OPTION2" == dataItem: 
     pass 
    else: 
    >do something< 


for dataItem in data: 
    if "OPTION2" == dataItem: 
     continue 
    >do something< 
0

continue与循环使用的,您可能需要pass ehere。此外,您还可以使用in检查的关键是提供一本字典:

if 'OPTION1' in data: 
    # do something 
else: 
    pass 

但我不认为,这是你想要的!您希望您的默认值,填补空白,如果关键是不具备的data

defaults = {"OPTION1": "0", "OPTION2": "50", "OPTION3": "0", "OPTION4": "0"} 
finalData = defaults.update(data) 

了解更多here

+0

你的第一个选择似乎给了我一个语法错误:else: ^ SyntaxError:无效的语法 – user5740843

+0

是的,因为而不是'#'你必须有一些陈述。用'pass'替换它以用于测试目的,并且错误消失。 –

+0

我在if和else之间添加了我的声明。我没有从字面上理解你的代码示例。 – user5740843