在Python脚本中从一个CSV工作表移动到下一个

0 投票
2 回答
1950 浏览
提问于 2025-04-16 18:28

我一直在用Excel创建.csv格式的工作表,想用Python来解析这些工作表。每个工作表的名字都是一个商店的名字(比如工作表1是“Waitrose”,工作表2是“Tesco”,工作表3是“Asda”),里面有一列是产品列表(第一列),另一列是对应的价格(第二列)。我写了一个Python脚本,可以访问一个工作表并把里面的内容变成一个字典(见下面的例子),但我现在遇到问题了,找不到方法让程序去访问工作簿里的下一个工作表。我希望能得到和工作表一样多的字典。csv模块似乎帮不上忙,我也找不到一个适合Python 3的第三方模块来处理Excel文件。我在想也许可以用applescript,但不太确定怎么把它嵌入到Python脚本里。

waitrose = {'apples' : 25, 'oranges' : 45 等等}

有什么建议吗?

保罗。

2 个回答

1

我没用过这个,但你有没有看看xlrd这个模块?它似乎可以用来读取普通的Excel文件,包括工作表。

https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html

3

每个工作表都必须单独保存为一个CSV文件。既然你已经会处理单个CSV文件了,我就专注于如何处理这些单独的文件。一旦你为每个Excel工作表都准备好了CSV文件,你可以使用glob模块来遍历一个文件夹中的每个.csv文件。通过glob.glob(),你可以在路径中使用通配符,所以如果你只想获取文件夹中的.csv文件,可以使用*.csv这个通配符。

import glob
import os

for csvFilename in glob.glob("C:\\path-to-folder-with-csv\\*.csv"):
    # csvFilename now contains the full path to the next CSV in the folder

    # This will give us the basename of the file without the extension
    worksheet = os.path.basename(os.path.splitext(csvFilename)[0])

    if worksheet.lower() == "waitrose":
        # Parse Waitrose CSV...

    elif worksheet.lower() == "tesco":
        # Parse Tesco CSV...

    elif worksheet.lower() == "asda":
        # Parse Asda CSV...

撰写回答