我有一个行数组,位置5的值可以是以下值之一:
"Tablespace Free Space (MB)", "Tablespace Space Used (%)"
如果line[5]
是其中任何一项,我需要做一些额外的工作。
我试过这个:
if (line[5] in ("Tablespace Space Used (%)")|("Tablespace Free Space (MB)"))
# some other code here
我一直收到这个错误:
if (line[5] in ("Tablespace Space Used (%)"|"Tablespace Free Space (MB)"))
^
SyntaxError: invalid syntax
答案 0 :(得分:3)
您在:
声明的末尾错过了if
。
但是,您的测试也使用了无效的语法;它会导致运行时错误(TypeError: unsupported operand type(s) for |: 'str' and 'str'
)。您想要创建一个元组或一组要测试的字符串,而不是使用|
:
if line[5] in ("Tablespace Space Used (%)", "Tablespace Free Space (MB)"):
或
if line[5] in {"Tablespace Space Used (%)", "Tablespace Free Space (MB)"}:
后者在技术上更有效率,除非您使用的是Python 2,其中集合未被优化为常量,就像元组版本中的元组一样。使用{...}
创建集需要Python 2.7或更高版本。
答案 1 :(得分:1)
您使用==检查相等性
4 == 2*2
True
要使用if语句,请使用':'
结束该行if line[5] in {'Tablespace Space Used (%)', 'Tablespace Free Space (MB)'}:
do x