我使用下面提到的代码使用Python编辑csv。在代码中调用的函数构成代码的上部。
问题:我希望下面引用的代码从第二行开始编辑csv,我希望它排除包含标题的第一行。现在它只在第一行应用函数,而我的标题行正在被更改。
in_file = open("tmob_notcleaned.csv", "rb")
reader = csv.reader(in_file)
out_file = open("tmob_cleaned.csv", "wb")
writer = csv.writer(out_file)
row = 1
for row in reader:
row[13] = handle_color(row[10])[1].replace(" - ","").strip()
row[10] = handle_color(row[10])[0].replace("-","").replace("(","").replace(")","").strip()
row[14] = handle_gb(row[10])[1].replace("-","").replace(" ","").replace("GB","").strip()
row[10] = handle_gb(row[10])[0].strip()
row[9] = handle_oem(row[10])[1].replace("Blackberry","RIM").replace("TMobile","T-Mobile").strip()
row[15] = handle_addon(row[10])[1].strip()
row[10] = handle_addon(row[10])[0].replace(" by","").replace("FREE","").strip()
writer.writerow(row)
in_file.close()
out_file.close()
我试图通过将row
变量初始化为1
来解决这个问题,但它没有工作。
请帮助我解决这个问题。
解决这个问题的另一种方法是使用DictReader类,该类“跳过”头行并使用它来允许命名索引。
给出“foo.csv”如下:
像这样使用听写器:
执行
row=1
不会改变任何内容,因为您只需用循环的结果覆盖它。要跳过一行,请执行
next(reader)
。您的
reader
变量是一个iterable,通过在其上循环您可以检索行。要使它在循环之前跳过一项,只需调用^{} 并忽略返回值。
您还可以稍微简化代码;将打开的文件用作上下文管理器以自动关闭它们:
如果要将头写入未处理的输出文件,也很容易,请将
next()
的输出传递给writer.writerow()
:相关问题 更多 >
编程相关推荐