У меня есть скрипт на python, который успешно загружает CSV-файл в двумерный массив и затем успешно извлекает значение нужной ячейки на основе значений столбца и заголовка строки. В целях диагностики у меня есть скрипт, который печатает содержимое матрицы данных, прежде чем она будет помещена в массив. Сценарий работает, когда данные из базового CSV-файла содержат значения для всех строк / столбцов. Проблема в том, что он выдает ошибку, когда я запускаю сценарий для файла CSV, который, очевидно, имеет пару пустых строк / столбцов в конце файла CSV. Я попытался решить эту проблему, открыв файл CSV в Notepad ++ и удалив столько, сколько это позволило бы мне удалить из конца файла. Notepad ++ позволил мне удалить одну строку в конце, но не указывал на наличие пустых столбцов. После более глубокого изучения взаимосвязи между распечаткой python и структурой моих базовых данных я вижу, что команда печати python говорит, что в конце массива есть два пустых столбца. В любом случае, после редактирования файла CSV, я по-прежнему печатал те же данные, когда запускал скрипт, и он по-прежнему выдавал ту же ошибку, как если бы я не удалил пустую строку из конца файла CSV. Я проверил, что я сохранил файл csv, пару раз открыл и закрыл файл csv, пару раз закрыл и заново открыл python, но ошибка все еще сохраняется:
Вот мой вопрос:
Как мне изменить скрипт ниже, чтобы избежать этой ошибки?
Вот функция, о которой я говорил выше:
def GetHSD_alpha(NumberOfColumnMeans,dfResid):
dirname=os.path.dirname(os.getcwd())
resources=os.path.join(dirname,'resources')
inputfile=os.path.join(resources,'CriticalValuesOfTukeysHSD_a_0_01.csv')
separator=','
ColumnIndex=NumberOfColumnMeans
RowIndex=dfResid
cast = p.cast
data = [[] for dummy in xrange(13)]
for line in open(inputfile, 'r'):
fields = line.strip().split(separator)
for i, number in enumerate(fields):
data[i].append(number)
print 'data HSD alpha is: ',data
time.sleep(2)
CriticalValuesArray=p.array(data)
HSD_alpha_0_01=CriticalValuesArray[ColumnIndex,RowIndex]
return HSD_alpha_0_01
Также, для справки, здесь приведена сокращенная версия результата печати данных, которые выдают ошибку. Обратите внимание на пустые элементы в конце, которые я не могу удалить вручную из моего csv-файла перед запуском скрипта:
данные HSD альфа: [['', '5', '6', '7'], ['2', '5.7', '5.24', '4.95'], ['3', ' 6,98 ',' 6,33 ',' 5,92 '], [' 11 ', '10,48', '9,3', '8,55'], [], []]
Также для справки приведена сокращенная версия результата печати данных из другого файла CSV, который я импортировал в скрипт для диагностических целей. Данные, соответствующие распечатке ниже, НЕ заставляют скрипт выдавать ошибку:
Данные HSD альфа: [['', '1', '2', '3'], ['1', '4052', '98 .49 ', '34 .12'], ['2', '4999', '99 .01 ', '30 .81'], ['3', '5403', '99 .17 ', '29 .46']]
Опять же, когда я открываю базовые файлы csv в Notepad ++, кажется, что нет пустых столбцов или строк, и я тщательно проверил эти файлы данных.
Наконец, я представляю, что число пустых строк / столбцов может варьироваться, поэтому любое решение должно было бы иметь возможность обрабатывать переменные числа пустых строк / столбцов.
Заранее спасибо.