编程语言
首页 > 编程语言> > python:理解范围内的异常:是否可以获取循环变量的值?

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