CSV文件中的空白值(不仅仅是行)

时间:2012-03-05 16:23:57

标签: python excel csv

我目前正在Excel中打开包含多列的CSV文件,其中值只会在数字更改时显示。例如,数据实际上可能是:90,90,90,90,91。但它只会显示为90 ,,,, 91。我真的很喜欢它们之间的值被填充90秒。无论如何python可以帮助吗?我真的很感谢你的帮助!

4 个答案:

答案 0 :(得分:2)

一种技巧是使用generator函数获取一行数据,并根据需要使用yield返回带有填充值的行。

代码

def fill_row(row):
    last_val = None
    for col in row:
        if(col != '' and col is not None):
            last_val = col
        yield last_val


inp_row = [90,'','','','',91,'',92]
filled_row = [x for x in fill_row(inp_row)]

print(filled_row)

输出

[90,90,90,90,90,91,91,92]

替代解决方案

纯粹基于列表的解决方案如下所示

def build_filled_row(row):
    last_val = None
    new_row = []
    for col in row:
        if(col != '' and col is not None):
            last_val = col
        new_row.append(last_val)
    return new_row

alternate_filled_row = build_filled_row(inp_row)

print(alternate_filled_row)

答案 1 :(得分:0)

使用wordpad打开CSV时,是否可以看到缺失的值?如果是这样,那么Python或任何其他脚本语言也应该看到它们。

答案 2 :(得分:0)

您也可以在excel中完全执行此操作:

选择列(或您正在使用的任何范围),然后转到编辑>转到(Ctrl + G)并单击特殊。 检查空白&单击确定。 这将仅选择列表中的空单元格。 现在输入=键,然后按向上箭头并按住Ctrl键输入。

这将在每个空白单元格中放置一个公式,使其等于其上方的单元格。然后,您可以仅复制^粘贴值以删除公式。

答案 3 :(得分:0)

一个简短的解决方案(一个用于将['90','','','','','91']转换为['90','90','90','90','90','91']的衬垫):

 import csv
 spamReader = csv.reader(open('eggs.csv', 'rb'))
 for row in spamReader:
      a = map(lambda i : reduce(lambda y, z: z != "" and z or y, row[:i]), range(1,len(row)+1))
      print ",".join(a)