Python:如何从 xlsx 文件中抓取数据的语法?

标签 python pep8

目前我正在从 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, ...),但是这样更好吗?感觉我在这方面失去了很多可读性。

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

最佳答案

您的代码不违反 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

关于Python:如何从 xlsx 文件中抓取数据的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629562/

相关文章:

python - 如何配置 Pylint 以检查 PEP8 检查的所有内容?

python - 使用 pep8 约定整理 Python 代码的库

python - 为什么简单回归的 TensorFlow 结果与其输入相差甚远?

python - 我收到类型错误 : '<' not supported between instances of 'str' and 'int'

python - 在 PyCharm 中使用 Ctrl/C 选择行,就像 Sublime Text 一样

python - 是否有推荐的多行导入格式?

python - Reportlab:Platypus 是否可以有内部链接?

python - postgresql 中 "TEXT"数据类型的最大大小

pycharm - 当我使用应该忽略缩进的三引号字符串时,如何阻止 PyCharm 显示 PEP8 混合缩进错误

python - PEP8:W292 和 W391 之间的冲突