line
您需要within的索引thefile
。一旦你有了它,这很容易。你得到的方法是enumerate。
def CleanFile(sourceFile):
global thefile
thefile=list(csv.reader(open(sourceFile, 'rb'), delimiter=',', quotechar='"'))
for i, line in enumerate(thefile):
if line[3]=='':
del thefile[i]
但是,值得询问您是否真的需要删除它。例如,您可以像这样过滤掉它吗?
def CleanFile(sourceFile):
global thefile
thefile=[line for line in
csv.reader(open(sourceFile, 'rb'), delimiter=',', quotechar='"'))
if line[3] != '']
line[3] == ''
或者,根据您对数据的处理方式,在输出或计算时跳过行可能更有意义。或者,更好的是,一开始就不要列出清单;只需将 csv.reader 保留为迭代器——然后您可以通过itertools.ifilter
或生成器表达式在其前面添加一个过滤器。实际上,这就像更改两个字符一样简单:
def CleanFile(sourceFile):
global thefile
thefile=(line for line in
csv.reader(open(sourceFile, 'rb'), delimiter=',', quotechar='"'))
if line[3] != '')
当然,如果您需要,例如随机访问thefile
. 但是,如果您要逐行迭代它,这可能是最好的解决方案。(除了它thefile
不应该是全局的;它应该根据需要从一个函数传递到另一个函数。)