将列表中的“”值替换为“0”

2024-10-01 15:37:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个包含.csv值的.csv文件在表中被视为空。例如:

ID   Volts   Current   Watts
0    383               0
1    383     1         383
2    382     2         764

这个.csv文件被输入到我的程序中,并转换成如下列表:

^{pr2}$

它基本上接受csvFile中的每一行,并将其转换为如下所示的值列表:

['0', '383', '', '0']['1', '383', '1', '383]

注意,NULL值现在只是空字符串,''

然后,关于上述程序的片段,{}被定义为:

def removeNull(row):
    nullIndex = row.index('')
    row.remove('')
    newRow = row.insert(nullIndex, '0')
    return newRow

它在列表(也称为行)中查找空字符串'',并将其索引记为nullIndex。然后删除所述索引处的空字符串,将其替换为'0',并返回已编辑的列表。在

问题:我的removeNull()函数到底出了什么问题,导致它只替换列表中的第一个空字符串''?我如何修复它,使它适用于列表中的所有空字符串?在

为了澄清一下,像这样一个每行只有一个值的表,或者转换为列表的空字符串,都可以正常工作。在

ID   Volts   Current   Watts
0    383               0
1    383     1         383
2    382     2         764

['0', '383', '', '0']效果很好。

但是,如果我有这样一个表,每行有多个多个NULL值,它只会替换转换后列表中的第一个空字符串,而对其余的字符串不做任何操作。在

ID   Volts   Current   Watts
0                      0
1    383     1         383
2    382     2         764

['0', '', '', '0']不能正常工作。


Tags: 文件csv字符串程序id列表currentnull
1条回答
网友
1楼 · 发布于 2024-10-01 15:37:59

因为list.index只返回列表中该项第一次出现的索引。您可以对每一行使用列表理解来进行替换:

def removeNull(row):
    return ['0' if i=='' else i for i in row]
    #       |<- ternary op. ->|  

list comprehension中的三元运算符'0'替换空白字符串,而其他字符串则按原样返回。在

附带说明的是,您的函数不会就地修改row,因此,您需要将函数的返回值赋给row

^{pr2}$

相关问题 更多 >

    热门问题