我正在尝试创建3个嵌套的for循环,并跳过任何for循环中没有的任何值。我尝试了不同的方法,但还没有取得太大的成功。这是for循环:
for industry in string.ascii_uppercase:
for code in range(1, 99):
for year in range(1998, 2019):
createCSV(industry, code, year)
问题在于存在无法提供数据的行业和代码值。该代码在代码= 3处中断,因为变量代码的原始值中缺少3。如果只是一个值,我可以使用Continue跳过它。
for industry in string.ascii_uppercase:
for code in range(1, 99):
if code == 3:
continue
for year in range(1998, 2019):
createCSV(industry, code, year)
但是行业和代码都有更多缺失的价值,我正在尝试寻找一种有效的方法。感谢您的帮助。
答案 0 :(得分:1)
如果您已经知道哪些值会导致错误,请避免循环访问它们。
missing_code_values=[3,4,5,6,7,83]
missing_ascii_values=['A','Z']
for industry in [x for x in string.ascii_uppercase if x not in missing_ascii_values]:
for code in [x for x in range(1, 99) if x not in missing_code_values]:
for year in range(1998, 2019):
createCSV(industry, code, year)
如果您不知道,则可以使用try / except
for industry in string.ascii_uppercase:
for code in range(1, 99):
for year in range(1998, 2019):
try:
createCSV(industry, code, year)
except: # mention specific exception if you can
print("Skipping Industry-",industry," Code-",code," Year-",year)
答案 1 :(得分:0)
一种可能的方法可能是使用try/except子句:
for industry in string.ascii_uppercase:
for code in range(1, 99):
for year in range(1998, 2019):
try:
createCSV(industry, code, year)
except Exception:
print(f"Warning: unable to create CSV for industry '{industry}' for code '{code}' for year '{year}'")
,您仍然可以用Exception
函数引发的特定异常类替换通用createCSV
。例如,如果您知道当提供无效的createCSV
值作为输入参数时ValueError
将引发code
,则用except Exception:
替换except ValueError:
。这将有助于避免一些潜在的陷阱(有关更多信息,请参见here)。
但是,如果可能的话,我建议改为:
code
值检索可迭代对象,然后仅对它们进行循环,或者createCSV
的编程代码,以使其在提供无效的code
值时不会中断。答案 2 :(得分:-3)
您可以检查Null in Python:
for industry in string.ascii_uppercase:
for code in range(1, 99):
if code is None:
continue
for year in range(1998, 2019):
createCSV(industry, code, year)