我是一个完全的编程新手,这是我第一个真正的程序,我试图写。你知道吗
所以我有一个巨大的CSV文件(数百列和数千行),我试图根据字段中的值只提取很少的列。它工作得很好,我得到了很好的输出,但是当我试图在一个函数中封装相同的逻辑时,问题就出现了。 它只返回第一个提取的行,但是打印工作正常。你知道吗
为了这个我已经玩了好几个小时,在这里读了其他的例子,现在我的脑子乱七八糟的。你知道吗
import csv
import sys
newlogfile = csv.reader(open(sys.argv[1], 'rb'))
outLog = csv.writer(open('extracted.csv', 'w'))
def rowExtractor(logfile):
for row in logfile:
if row[32] == 'No':
a = []
a.append(row[44])
a.append(row[58])
a.append(row[83])
a.append(row[32])
return a
outLog.writerow(rowExtractor(newlogfile))
您过早退出。当您将
return a
放入for
循环中时,在第一次迭代时会调用return。这意味着只有firs迭代运行。你知道吗一个简单的方法是:
您还可以考虑使用
yield
函数中有一个return语句…当它到达该行时,它将返回(从而终止循环)。你需要
yield
。你知道吗见What does the "yield" keyword do in Python?
相关问题 更多 >
编程相关推荐