无论我在if语句下编写什么语法错误

时间:2015-07-03 13:32:42

标签: python arrays list syntax split

我在这方面苦苦挣扎,也许是我无法看到但却很简单......

import subprocess, pprint
cmd = subprocess.Popen('bhosts', shell=True, stdout=subprocess.PIPE)
errorCode = 0
description =""
arrayprova=[]
for linea in cmd.stdout:
    if "ok" not in linea and "closed" not in linea and "HOST_NAME" not in linea:
        arrayprova = linea.split()
        description = description + "host " + arrayprova[0] + "is " + arrayprova[1] 
        errorCode = 1
print arrayprova[1]
if errorCode == 0:
    description ="Everything is just fine."
print description

我收到此错误:

  File "bhosts_nodes_check.py", line 9
    description = description + "host " + arrayprova[0] + "is " + arrayprova[1]
    ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:4)

您正在编辑器中混合制表符和空格:

>>> '''\
...         arrayprova = linea.split()
...                 description = description + "host " + arrayprova[0] + "is " + arrayprova[1] 
... '''
'        arrayprova = linea.split()\n\t\tdescription = description + "host " + arrayprova[0] + "is " + arrayprova[1] \n'
>>> # ^^^ spaces here - but tabs here ^^^^
...

Python将标签扩展到每个第8列,但您可能将编辑器设置为仅使用4个空格作为选项卡,这进一步增加了混淆。您的arrayprova行缩进为8个空格,而下一行的两个标签扩展为 16 空格。

不要使用混合缩进样式;坚持只有标签或只有空格。

您可以将大多数编辑器配置为仅使用空格 进行缩进,其中按 TAB 键会导致写入空格。这是Python styleguide (PEP 8)建议的内容:

  

标签或空格?

     

切勿混合标签和空格。

     

缩进Python最流行的方法是仅使用空格。第二种最流行的方式是仅使用标签。使用制表符和空格混合缩进的代码应转换为仅使用空格。当使用-t选项调用Python命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告。使用-tt时,这些警告会出错。强烈推荐这些选项!

     

对于新项目,强烈建议仅使用空格。大多数编辑都具有使这很容易做到的功能。