gpt4 book ai didi

python - 尝试编写 python CSV 提取器

转载 作者:行者123 更新时间:2023-12-01 06:02:09 25 4
gpt4 key购买 nike

我是编程新手,这是我尝试编写的第一个真正的程序。

所以我有这个巨大的 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 将在第一次迭代时被调用。这意味着仅运行第一次迭代。

执行此操作的一个简单方法是:

def rowExtractor(logfile):
#output holds all of the rows
ouput = []
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])
output.append(a)
#notice that the return statement is outside of the for-loop
return output
outLog.writerows(rowExtractor(newlogfile))

您还可以考虑使用yield

关于python - 尝试编写 python CSV 提取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com