1

我有一个从 Excel 文档中导出的文本文件。它沿列列出了每个供应商,在下面的行中列出了各自的定价。最后会列出最低供应商和最低价格。例子:

Project: Name.
Supplier A, Supplier B, Supplier C, Lowest Price, Winning Supplier
600, 900, 650, 600, Supplier A 

由于我需要搜索数百个 Excel 文档,我认为最好创建每个文档的文本文件并在 python 中处理数据。

我已经阅读了 python 手册,但我发现很难得到任何结果。我想要的最终结果是能够处理单个文件夹中的大量文件。我的目标是能够列出每个供应商,并搜索他们是否在每个项目上都取得了成功,如果他们不是以美元计价或价格与获胜供应商的百分比差异有多大。

任何人都可以就从哪里开始构建它提供一些帮助吗?

格雷吉 D

4

2 回答 2

2

我可能会将供应商数据封装在一个类中:

class Supplier(object):
    def __init__(self):
        self.projects = []  #winning projects
        self.bids = []      #how much this supplier bid, winning bid.

然后我将每个数据文件分别解析为:

from collections import defaultdict
def parse_datafile(fname,output=None):
    if output is None:
       output = defaultdict(Supplier)
    with open(fname,r) as f:
       project = f.readline().split(':')[1].strip()
       suppliers = map(str.strip,f.readline().split(',')[:-2])
       bids = map(str.strip,f.readline().split(','))
       winner = bids[-1]
       win_amt = bids[-2]

       for s,b in zip(suppliers,bids):
           output[s].bids.append(int(b),int(win_amt))
       output[winner].projects.append(project)
    return output

现在我们可以建立我们的字典:

 import glob
 from Collections import defaultdict
 d = defaultdict(Supplier)
 for fname in glob.iglob('*.txt'):
     d = parse_datafile(fname,output=d)

您可以通过以下方式获取有关该供应商的信息:

print d['supplier A'].projects
print [ float(bid)/winbid for bid,winbid in d['supplier A'].bids ]

等等

当然,有一些库可以.xls直接在 python 中解析文件,这可能比我的手动解析函数更合适。但我仍然认为包含所有相关信息的类的 defaultdict 可能是你最好的选择(不管你如何设法解析数据)。

于 2012-08-21T13:59:44.433 回答
2

我也缺少有关该问题的详细信息。但对我来说,总体而言,您最好直接使用 xls 文件,因为它们似乎包含相当多的语义。看看这里:http : //www.python-excel.org/ ,xlrd 非常棒且易于使用。

于 2012-08-21T13:59:17.767 回答