2

我需要从 Excel 中读取 CSV 文件,其行可能是任意长度。

问题是 python 保留了这些空白条目,但需要删除它们以供将来的算法使用。下面是输出,我不想要空白条目。

     ['5', '1', '5', '10', '4', '']
     ['3', '1', '5', '10', '2', '']
     ['6', '1', '5', '10', '5', '2']
     ['9', '10', '5', '10', '7', '']
     ['8', '5', '5', '10', '7', '']
     ['1', '1', '5', '10', '', '']
     ['2', '1', '5', '10', '1', '']
     ['7', '1', '5', '10', '6', '4']
     ['4', '1', '5', '10', '3', '1']
4

3 回答 3

3

csv这是与库集成的列表理解:

import csv

with open('input.csv') as in_file:
    reader = csv.reader(in_file)
    result = [[item for item in row if item != ''] for row in reader]

print result
于 2013-10-02T01:25:54.340 回答
1

这是一个尽可能详细的函数,我可以编写它来做你想做的事情。当然还有更巧妙的方法。

def remove_blanks(a_list):
    new_list = []
    for item in a_list:
        if item != "":
            new_list.append(item)
    return new_list
于 2013-10-01T23:48:43.763 回答
1

列表理解版本:

a = ['5', '1', '5', '10', '4', '']

[x for x in a if x != '']
Out[19]: ['5', '1', '5', '10', '4']

通过在 csv 读取步骤进行过滤可能会更好地为您服务。

于 2013-10-02T00:27:53.680 回答