Мне нужно получить определенные строки данных, в которых есть определенные ключевые слова (имена) и записать их в другой файл. Начальный файл представляет собой файл Excel объемом 1,5 ГБ. Я не могу просто открыть его и сохранить его в другом формате. Как я должен обрабатывать это с помощью python?
Как извлечь определенные строки данных из огромного листа Excel с помощью Python?
Ответ 1
Я автор и сторонник xlrd. Измените свой вопрос, чтобы ответить на следующие вопросы. [Такой материал в комментариях SO очень сложно прочитать]
-
Насколько велик файл в MB? [ "Огромный" не является полезным ответом]
-
Какое программное обеспечение создало файл?
-
Сколько памяти у вас на компьютере?
-
Что именно происходит при попытке открыть файл с помощью Excel? Пожалуйста, объясните: "Я могу открыть его частично".
-
Что именно сообщение об ошибке, которое вы получаете при попытке открыть "C:\bigfile.xls" с помощью script с помощью
xlrd.open_workbook
? Включите script, который вы запустили, полную трассировку и сообщение об ошибке -
Какая операционная система, какая версия Python, какая версия xlrd?
-
Знаете ли вы, сколько листов в файле есть?
Ответ 2
Мне кажется, что у вас есть электронная таблица, созданная с использованием 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, убедитесь, что в корневом каталоге вашего диска есть файл под названием 'bigfile.xls'. Если файл отсутствует, измените wb_path
на правильное местоположение файла, который вы хотите открыть.
Ответ 3
Я не использовал его, но xlrd выглядит так, будто он отлично справляется с чтением данных Excel.
Ответ 4
Ваша проблема в том, что вы используете Excel 2003. Чтобы читать этот файл, вам нужно использовать более новую версию. 2003 не будет открывать файлы размером более 1 М строк.