我有一个很大的.xls
文件,我希望根据第一列拆分成几个文件。数据结构有点不确定,使其复杂化很多。
基本上我需要为每个以“问题”开头的行创建一个单独的文件(见下文)。选项的数量是可变的,所以我不能使用块大小。
有什么办法可以用Python做到这一点吗?我在stackoverflow上搜索了很多,但我找不到确切的答案。非常感谢任何帮助。
Column A Column B Column C
Question 1
Option 1 Info1 Info2
Option 2 Info3
Option 3
Question 2
Option 1
Option 2
Option 3
Option 4
Question 3
Option 1
Option 2
Option 3
答案 0 :(得分:1)
要让Python使用.xls
个文件,您需要使用xlrd
和xlwt
之类的内容。以下脚本可以帮助您入门:
from itertools import groupby
import xlrd
import xlwt
workbook = xlrd.open_workbook(r"e:\python temp\input.xls")
sheet = workbook.sheet_by_index(0)
rows = [sheet.row_values(row, 0) for row in xrange(sheet.nrows)]
for k, g in groupby(rows, lambda x: x[0].startswith('Question')):
if k:
question = next(g)
else:
wb = xlwt.Workbook()
ws = wb.add_sheet('Sheet 1')
for colx, value in enumerate(question):
ws.write(0, colx, value)
for rowx, row in enumerate(g, start=1):
for colx, value in enumerate(row):
ws.write(rowx, colx, value)
wb.save(question[0] + '.xls')
这将打开您的input.xls
并读取所有行。然后使用groupby
将其拆分为问题和选项。然后基于该问题将每对写入新的输出Excel文件,例如, Question 1.xls
您可能需要添加输入和输出文件的完整路径。
可以在python-excel网站找到这两个图书馆。
答案 1 :(得分:0)
你的问题的确切答案将要求一个人创建整个代码,这不是SO的目标。
我想说,使用Python csv module这似乎并不复杂。请进一步查看并编辑您的问题,并进一步怀疑和/或未能达到预期结果的尝试。