首页 > 解决方案 > Python:如何对从 xlsx 文件中抓取的数据进行语法分析?

问题描述

目前我正在从 xlsx 文件中抓取一些数据。我的代码有效,但看起来一团糟——至少对我来说。因此,根据 PEP8,我不确定我的代码是否正常。

from openpyxl import load_workbook
[...]
        for row in sheet.iter_rows():
            id = row[0].value
            name = row[1].value
            second_name = row[2].value
            # ignore the following
            # middle_name = row[3].value
            city = row[4].value
            address = row[5].value
            field_x = row[7].value
            field_y = row[10].value
            some_function_to_save_to_database(id, name, second_name, ...)

等(请注意,对于其中一些值,我会进行额外验证等)。所以它有效,但感觉有点“笨拙”。显然我可以将它们直接传递给函数,使其成为可能some_function_to_save_to_database(row[0].value, row[1].value, ...),但它会更好吗?感觉我在这个中失去了很多可读性。

所以我的问题如下:这是好方法还是应该将这些字段字段名称映射到行顺序?设置这种刮擦样式的正确方法是什么?

标签: pythonpep8

解决方案


您的代码不违反 PEP8。但是,这有点麻烦。如果数据发生变化,维护起来也不容易。也许你可以试试:

DATA_INDEX_MAP = {
    'id' : 0,
    'name' : 1,
    'second_name' : 2,
    'city' : 4,
    'address' : 5,
    'field_x' : 7,
    'field_y' : 10
}

def get_data_from_row(row):
    return {key:row[DATA_INDEX_MAP[key]].value for key in DATA_INDEX_MAP}

for row in sheet.iter_rows():
    data = get_data_from_row(row)
    some_function_to_save_to_database(**data)

那么你需要做的只是修改DATA_INDEX_MAP.


推荐阅读