我试图找到这个问题的答案,但无济于事。这是我面临的问题 -
我有一个csv文件,其中一些行有三个元素(表示它们已满)和一些其他行只有一个元素(表示它们不满,所以应该丢弃)。这是一个例子:
Time, Voltage, Charge
A, B, C
D, E, F
G, H, I
J,
K,
L,
如上所述,我需要从csv文件中删除J, K
和L
。到目前为止,我已经尝试过这种方法(在另一个堆栈溢出线程here中找到):
if any(val not in (None,"") for val in row):
battlog_voltage.append(float(row[1])/1000.0)
行1是空字段开始的位置,如J, K, L
旁边所示。但是,我收到以下错误:
File "/home/raghavk/Documents/batterylog.py", line 81, in <module>
mydata = mylog.loadCycleData('battery-2.csv')
File "/home/raghavk/Documents/batterylog.py", line 68, in loadCycleData
battlog_voltage.append(float(row[1])/1000.0)
IndexError: list index out of range
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
csv.reader
对象为每一行创建一个新的列表,并不填充这些。只测试行长度:
if len(row) > 1:
您链接到的问题使用csv.DictReader()
,前面有字段名,导致None
或''
空字符串值。
答案 1 :(得分:0)
你可以做很多事。
可能有一种方法:
new_list = [];
for one_line in your_data_list:
spl = one_line.split(",");
if len( spl ) < 3:# or < 2 if you need
pass;
else:
new_list.append( spl) );