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

我目前在Excel中使用多列打开CSV文件,其中值只会在数字发生变化时才会显示。 例如,数据实际上可能是:90,90,90,90,91。 但它只会出现90,91,91。 我真的很喜欢90年代的价值观。 有反正python可以帮助这个吗? 我真的很感谢你的帮助!

['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) 

一种技术是使用生成器函数,该函数获取一行数据,并根据需要返回带有填充值的行。

 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]

替代scheme

纯粹的基于列表的解决scheme看起来像这样

 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) 

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

你也可以在Excel中完全做到这一点:

select列(或任何你正在使用的范围),然后去编辑>转到(Ctrl + G),然后单击特殊。 选中空白并单击确定。 这将只select列表中的空单元格。 现在键入=键,然后向上箭头和Ctrl – input。

这将在每个空白单元格中添加一个公式,使其等于它上面的单元格。 然后,您可以复制^粘贴值来摆脱公式。