【发布时间】:2018-11-19 00:20:23
【问题描述】:
我有一个 csv 文件,我需要在其中删除第二行和第三行以及第 3 到第 18 列。我能够分两步让它工作,这产生了一个临时文件。我在想必须有一个更好、更紧凑的方法来做到这一点。任何建议将不胜感激。
另外,如果我想删除多个列范围,我该如何在这段代码中指定。例如,如果我想删除第 25 到 29 列,除了已经指定的第 3 到 18 列,我将如何添加到代码中?谢谢
remove_from = 2
remove_to = 17
with open('file_a.csv', 'rb') as infile, open('interim.csv', 'wb') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
del row[remove_from : remove_to]
writer.writerow(row)
with open('interim.csv', 'rb') as infile, open('file_b.csv', 'wb') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
writer.writerow(next(reader))
reader.next()
reader.next()
for row in reader:
writer.writerow(row)
【问题讨论】:
-
你愿意使用 pandas 吗?
-
是的,我想知道如何在 pandas 而不是 pandas 中做到这一点。
-
几乎没有比使用临时文件然后覆盖原始文件更有效的方法,但如果您坚持here is how to edit a file in-place(还包括就地和临时文件方法和综合基准测试的各种示例)。