如何使用Python删除csv文件中只有一个项目的行?

时间:2016-06-21 06:24:57

标签: python csv

我试图找到这个问题的答案,但无济于事。这是我面临的问题 -

我有一个csv文件,其中一些行有三个元素(表示它们已满)和一些其他行只有一个元素(表示它们不满,所以应该丢弃)。这是一个例子:

Time, Voltage, Charge
A, B, C
D, E, F
G, H, I
J,
K,
L,

如上所述,我需要从csv文件中删除J, KL。到目前为止,我已经尝试过这种方法(在另一个堆栈溢出线程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

我该怎么做才能解决这个问题?

2 个答案:

答案 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) );