我有一个必须解析的csv数据集,其中缺少一些数据。 因此,我正在寻找一种将其替换为零的方法。
到目前为止,我要做的是正确解析文件并避免丢失数据,这使得解析在遇到的第一个错误数据时停止,并忽略下一个错误的数据,即使它们是正确的。
[(year, population) for year, population in zip(years, parsed) if population != '']
我试图添加一个else语句,该语句将导致三进制,但是会引发语法错误,
Years是字段列表,而Parsed是我想压缩在一起以获得元组列表的已解析数据。
是否有任何方法可以使用类似的语法替换此数据,而无需使用诸如csvreader这样的专用库(我正在学习,我不希望在不了解其工作原理的情况下完成所有工作)?
感谢您的帮助!
答案 0 :(得分:2)
您应该从头开始,以支持其他方面:
[(year, population) if population != '' else [Something] for year, population in zip(years, parsed)]
答案 1 :(得分:0)
我不确定我是否正确理解“解析停止...忽略下一个解析”的含义,因为这不是理解中的if
条件的工作原理。这是一个跳过不正确值的过滤器,而不是停止条件。例如,[x for x in range(5) if x % 2]
将返回[1, 3]
,跳过偶数。
但是,您也可以在理解内使用三元表达式。必须采用[expr1 if cond1 else expr1 for ... in ...]
之前的for
形式。