Форум сайта python.su
Всем привет.
Пишу модуль для мат расчетов.
у меня возникла небольшая проблема:
вот считвыаю с ексель файла, построчно
соответственно получаю список
870.0, 880.0, 920.0, 890.0, 890.0, 920.0, 900.0, 840.0, 890.0, 940.0, 950.0, 980.0, 990.0, 920.0, 950.0, 960.0, 890.0, 870.0, 930.0, 890.0, 850.0, 910.0, 920.0, 840.0, 850.0, 880.0, ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ''
как я понял, “ появляются из за того что строки разной длины.
как убрать ” ?
Отредактировано druidich92 (Сен. 7, 2016 11:47:49)
Офлайн
Код приведи и пример xls-файла.
Офлайн
py.user.next
Код приведи и пример xls-файла.
import xlrd import os from collections import Counter # import numpy as np from collections import defaultdict directory = 'excel Files' excelfiles = os.listdir(directory) for excel_file in excelfiles: rb = xlrd.open_workbook(directory + '\\' + excel_file) sheet = rb.sheet_by_index(0) for rownum in range(sheet.nrows): column = sheet.col_values(rownum)[1:] print(column)
Прикреплённый файлы: Сводная таблица.xlsx (54,9 KБ)
Офлайн
Она вообще выпадает, так как ты к колонкам применяешь нумерацию рядов (на 16 колонке выпадает). Явно что-то не то делаешь.
А пустые строки возникают, потому что колонки определяются по длине максимальной колонки. Если в колонке не хватает рядов, а они должны там быть, то эти ряды заполняются пустыми строками.
druidich92Ну да, где там построчно, ты поколоночно считываешь. Надо col_values() переделать на row_values().
вот считвыаю с ексель файла, построчно
Отредактировано py.user.next (Сен. 7, 2016 13:12:26)
Офлайн
скрипт подправил. теперь вроде норм выводит.
py.user.nextувы, но мне нельзя на нули менять, это тестовый файл, могут быть данные и с нулями. мне эти данные еще обработать надо
В общем, нужно каждый ряд, который содержит пустые строки, пропустить через функцию, которая пустые строки заменяет на нули.
Офлайн
а переопределить список исключив пустые элементы не вариант?
a = [980.0, 990.0, 920.0, 950.0, 960.0, 890.0, 870.0, 930.0, 890.0, 850.0, 910.0, 920.0, 840.0, '', '', '', '', '', '', ''] a =[ x for x in a if x != ''] print(a) [980.0, 990.0, 920.0, 950.0, 960.0, 890.0, 870.0, 930.0, 890.0, 850.0, 910.0, 920.0, 840.0]
Офлайн
druidich92Это не список. Список выглядит так:
соответственно получаю список
870.0, 880.0, 920.0
[870.0, 880.0, 920.0]
druidich92А что тогда означает убрать?
увы, но мне нельзя на нули менять, это тестовый файл, могут быть данные и с нулями
[i for i in line if not i]
Отредактировано doza_and (Сен. 7, 2016 22:02:39)
Офлайн