我有一个5列3行的csv文件。列用制表符分隔,行用新行分隔。有些元素是空的。我必须找到所有行的空列。文件在这里:
我的代码如下。问题是,它不适用于最后一列,即如果最后一列为空,或者行中最后一个制表符后的最后一列中没有值,它仍被计为非空字符串。我检查了“eachElement”的长度,奇怪的是,第一行和第二行的长度显示为1,而第三行的长度显示为空字符串。似乎它会对前两行最后一列中最后一个制表符后的新行进行计数(因此长度为1),但逻辑上不应该这样,因为我使用了“for line in content”。所以每一行应该只包含没有“\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
line
在末尾包含一个新行\n
。在for
循环中去掉它:我试过了,很管用。你知道吗
相关问题 更多 >
编程相关推荐