python:理解范围内的异常:是否可以获取循环变量的值?
作者:互联网
假设我正在解析一个固定宽度的文件:
file_format = {'year' : (0, 3, int), 'price' : (4, 10, float)}
for lineno, line in enumerate(input_file):
try:
fields = {k : v[2](line[v[0]:v[1]]) for k, v in file_format.items()}
except ValueError:
print("cannot parse line {}".format(lineno))
我想将无法解析哪个特定字段的信息添加到异常打印输出中.有什么方法可以检索k和v值而不用循环替换dict理解?
解决方法:
您可以将有问题的部分转换为函数
file_format = {'year' : (0, 3, int), 'price' : (4, 10, float)}
def build_value(v):
try:
return v[2](line[v[0]:v[1]])
except ValueError:
print("cannot parse line {}".format(lineno))
for lineno, line in enumerate(input_file):
fields = {k : build_value(v) for k, v in file_format.items()}
标签:python-3-x,exception,python,list-comprehension 来源: https://codeday.me/bug/20191102/1992746.html