我最近开始学习python3,我正在尝试写一个例外。 我有这一行,这是一个单词列表。 我想将“创建”这个词与列表相匹配,有时它有时候不是。如果不存在,我会收到此错误:
Traceback (most recent call last):
File "sub_process.py", line 17, in <module>
if (line.index("create")):
ValueError: 'create' is not in list
我很好。这是预料之中的。所以我想如果我写了一个例外,脚本可以继续并继续做。所以我在下面是一个例外,它所做的一切都没有。抓住错误并继续。
line = line.split()
if line.index("create"):
print("basd");
except ValueError:
print("123");
但是每当我尝试编译这个时,我都会在“除外”时遇到语法错误,我不知道为什么。与我能找到的所有教程相比,它看起来非常正常。
答案 0 :(得分:4)
您应该只使用index
运算符,而不是使用in
,它返回一个简单的布尔值:
if "create" in line:
print("basd")
else:
print("123")
这不会引发异常,因此不需要try / except。
答案 1 :(得分:1)
您需要在try
声明之前添加if
:
line = line.split()
try: # added 'try'
if line.index("create"):
print("basd");
except ValueError:
print("123");
另请注意,在语句结束时您不需要分号,并且在以这种方式使用分号时通常不赞成。
作为对@Rosemans解决方案的改变,你可以在一条线上完成所有这些:
print('basd') if "create" in line else print("123")
答案 2 :(得分:1)
if / except不是有效的构造。使用try / except:
line = line.split()
try:
if line.index('create'):
print('basd')
except ValueError:
print("123")
或者,您可以完全避免异常和try / except:
line = line.split()
if 'create' in line:
print('basd')
else:
print("123")
答案 3 :(得分:0)
#use try block..
line = line.split()
try:
if line.index("create"):
print("basd")
except ValueError:
print("123")