Найти - Пользователи
Полная версия: Удаление пустых значений списка
Начало » Python для новичков » Удаление пустых значений списка
1
druidich92
Всем привет.
Пишу модуль для мат расчетов.
у меня возникла небольшая проблема:
вот считвыаю с ексель файла, построчно
соответственно получаю список
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, ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ''
как я понял, “ появляются из за того что строки разной длины.
как убрать ” ?

py.user.next
Код приведи и пример xls-файла.
druidich92
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)
py.user.next
Она вообще выпадает, так как ты к колонкам применяешь нумерацию рядов (на 16 колонке выпадает). Явно что-то не то делаешь.
А пустые строки возникают, потому что колонки определяются по длине максимальной колонки. Если в колонке не хватает рядов, а они должны там быть, то эти ряды заполняются пустыми строками.

druidich92
вот считвыаю с ексель файла, построчно
Ну да, где там построчно, ты поколоночно считываешь. Надо col_values() переделать на row_values().

В общем, нужно каждый ряд, который содержит пустые строки, пропустить через функцию, которая пустые строки заменяет на нули.
druidich92
скрипт подправил. теперь вроде норм выводит.
py.user.next
В общем, нужно каждый ряд, который содержит пустые строки, пропустить через функцию, которая пустые строки заменяет на нули.
увы, но мне нельзя на нули менять, это тестовый файл, могут быть данные и с нулями. мне эти данные еще обработать надо
marvellik
а переопределить список исключив пустые элементы не вариант?
 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]
doza_and
druidich92
соответственно получаю список
870.0, 880.0, 920.0
Это не список. Список выглядит так:
 [870.0, 880.0, 920.0]

druidich92
увы, но мне нельзя на нули менять, это тестовый файл, могут быть данные и с нулями
А что тогда означает убрать?
может
 [i for i in line if not i]
вообще pandas читает xls одной строкой и обрабатывает пустые позиции
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB