У меня есть CSV-файл с 5 столбцами и тремя строками.Столбцы разделены табуляцией, а строки разделены новыми строками.Некоторые элементы пусты.Я должен найти столбцы, которые пусты для всех строк.Файл здесь:
образец таблицы
Мой код указан ниже.Проблема в том, что он не работает для последнего столбца, т. Е. Если последний столбец пуст или в последнем столбце после последней вкладки в строке нет значения, он все равно считается непустой строкой.Я проверил длину «eachElement» и, как ни странно, длина показывает 1 для 1-й и 2-й строки, но показывает пустую строку для 3-й строки.Похоже, что он подсчитывает новую строку после последней вкладки в последнем столбце для первых двух строк (отсюда длина 1), но логически это не должно происходить, потому что я использовал «для строки в содержимом».Таким образом, каждая строка должна содержать только эту строку без "\ n"
import sys
import array
rowIndex = -1
countEmptyCol = array.array('i',(0 for i in range(0,5))) #this creates an unsigned int array of 58 elements and assigns 0 for each
listEmptyColumns = [] #contains index of columns that are empty for all records
#Get number of empty values for each columns in the array
with open("D:\TU Ilmenau\L1T2\Labs\DDM\Python\database.csv", "r", 1) as file:
content = file.readlines()
for line in content:
rowIndex += 1
colIndex = -1
for eachElement in line.split("\t"):
colIndex += 1
if not eachElement:
#increases the value of index by 1
countEmptyCol.insert(colIndex, countEmptyCol.pop(colIndex) + 1)
numOfRows = rowIndex + 1
#Compare if number of empty values for each column is equal to the number of total rows
for idx, val in enumerate(countEmptyCol):
if val == numOfRows:
listEmptyColumns.append(idx)
print listEmptyColumns