我有几个.csv
包含NULL
值的文件,这些值在表中被视为空。例如:用'0'替换列表中的值
ID Volts Current Watts
0 383 0
1 383 1 383
2 382 2 764
这.csv
文件输入到我的程序,并转换为这样的名单:
with open(inputPath + file) as inFile:
csvFile = csv.reader(inFile)
for row in csvFile:
removeNull(row)
print(row)
基本上发生在csvFile
每一行,并将其转化值的列表,看起来是这样的:
['0', '383', '', '0']
,['1', '383', '1', '383]
等
请注意,NULL
值现在只是空字符串,''
。
然后,在相对于上述removeNull()
程序的snipet定义为:
def removeNull(row):
nullIndex = row.index('')
row.remove('')
newRow = row.insert(nullIndex, '0')
return newRow
看起来通过列表(又名行)为空字符串,''
,并注意到其索引为nullIndex
。然后删除所述索引处的空字符串,将其替换为'0'
并返回编辑后的列表。
问题:到底是什么毛病我removeNull()
功能,导致它只能更换第一个空字符串,''
,在列表中?我该如何解决这个问题,以便它适用于列表中的所有空字符串?
为了便于说明,这样的表格只有一个NULL
每行的值或空字符串转换为列表后,工作得很好。
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']
不能正常工作。
'NEWROW = row.insert( ...)'看上去很腥......'row.insert'应该返回'None'。 – mgilson
不需要单独的功能。只需在循环中添加一行:'用于csvFile中的行:row = [item if item else'0'for item in row]' –
@StevenRumbalski这不是很明显,因为我上面说过,但我需要单独功能用于该程序的其他元素。然而,你的答案是完全正确的,所以谢谢你。 – ThoseKind