捕获电子表格数据的最佳和最有效的方法

2024-05-04 05:06:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个电子表格有这样的数据

Group,Region,Market
G7,EMEA,Germany
G7,NA,Canada
G7,APAC,Japan

捕捉这些信息最有效的方法是什么? 我使用字典将这些信息存储为{Group:{Region:Market}}

我的密码是

    try:
        with open(fileName) as sourceFile:
            for line in sourceFile:
                if not headerRow:
                    for group, region, market in [line.rstrip().split(",")]:
                        if group in self.REGIONAL_MARKETS:
                            self.REGIONAL_MARKETS[group].update({int(region):market})
                        else:
                            self.REGIONAL_MARKETS.update({group:{int(region):market}})
                headerRow=False
            return self.REGIONAL_MARKETS
    except IOError as e:
        print("Invalid File Name. Message = "%(e))

谢谢你的意见


Tags: inself信息forasgroupmarketregion
1条回答
网友
1楼 · 发布于 2024-05-04 05:06:13

两件事:

  1. 您的try块太大(越短越好,因为它意味着更具体的错误处理);并且
  2. 可以使用^{}简化输出数据结构的创建。你知道吗

尝试以下操作:

from collections import defaultdict

data = defaultdict(dict)

try:
    with open(fileName) as sourceFile:
        header = sourceFile.readline() # skip header
        lines = sourceFile.readlines() # get the rest of the data
except IOError as e:
    print("Invalid File Name. Message = "%(e))
else:
    for line in lines:
        group, region, market = line.rstrip().split(",") # don't iterate over a
                                                         # single-element list
        data[group].update({region: market}) # how is e.g. 'EMEA' an integer?

根据你的测试数据,我得出:

>>> data
defaultdict(<type 'dict'>, {'G7': {'NA': 'Canada', 
                                   'EMEA': 'Germany', 
                                   'APAC': 'Japan'}})         

另外,查看^{},它将为您完成一些文件处理工作。你知道吗

相关问题 更多 >