如何用Python从大Excel表中提取特定行数据?
我需要从一个包含特定关键词(比如名字)的数据行中提取信息,并把这些信息写入另一个文件。起始文件是一个1.5 GB的Excel文件。我不能直接打开它然后另存为其他格式。我该如何用Python来处理这个问题呢?
4 个回答
我没用过这个,不过xlrd看起来可以很好地读取Excel数据。
听起来你有一个用Excel 2007创建的电子表格,但你只有Excel 2003。
Excel 2007可以创建有1,048,576行和16,384列的工作表,而Excel 2003只能处理65,536行和256列。因此,你无法在Excel中打开整个工作表。
如果这个工作簿只是尺寸更大,那么xlrd
应该可以用来读取这个文件。但如果文件实际上超出了你电脑的内存(我觉得这不是问题,因为你可以用EditPad lite打开这个文件),那么你就需要找其他方法,因为xlrd
会把整个工作簿加载到内存中。
假设是第一种情况:
import xlrd
wb_path = r'c:\bigfile.xls'
output_path = r'c:\output.txt'
wb = xlrd.open(wb_path)
ws = wb.sheets()[0] # assuming you want to work with the first sheet in the workbook
with open(output_path, 'w') as output_file:
for i in xrange(ws.nrows):
row = [cell.value for cell in ws.row(i)]
# ... replace the following if statement with your own conditions ...
if row[0] == u'interesting':
output_file.write('\t'.join(row) + '\r\n')
这会给你一个以制表符分隔的输出文件,应该可以在Excel中打开。
编辑:
根据你对John Machin问题5的回答,确保在你的C盘根目录下有一个名为'bigfile.xls'的文件。如果文件不在那儿,请把wb_path
改成你想打开的文件的正确位置。
我是xlrd的作者和维护者。请你修改一下你的问题,提供以下几个方面的信息。[在StackOverflow的评论里看到这些内容非常难以阅读]
这个文件有多大,单位是MB?["巨大"这样的描述没有什么用]
这个文件是用什么软件创建的?
你电脑的内存有多少?
当你尝试用Excel打开这个文件时,具体发生了什么?请详细解释一下“我可以部分打开”的意思。
当你用
xlrd.open_workbook
尝试打开"C:\bigfile.xls"时,具体出现了什么错误信息?请把你运行的脚本、完整的错误追踪信息和错误消息都包括上。你使用的是什么操作系统?Python的版本是多少?xlrd的版本又是多少?
你知道这个文件里有多少个工作表吗?