我正在尝试扫描一个 csv 文件并逐行进行调整。最后,我想删除最后一行。如何删除同一扫描循环中的最后一行?
我下面的代码从原始文件读取,进行调整,最后写入一个新文件。
import csv
raw_data = csv.reader(open("original_data.csv", "r"), delimiter=",")
output_data = csv.writer(open("final_data.csv", "w"), delimiter=",")
lastline = # integer index of last line
for i, row in enumerate(raw_data):
if i == 10:
# some operations
output_data.writerow(row)
elif i > 10 and i < lastline:
# some operations
output_data.writerow(row)
elif i == lastline:
output_data.writerow([])
else:
continue
请您参考如下方法:
你可以创建一个生成器来生成除最后一个元素之外的所有元素:
def remove_last_element(iterable):
iterator = iter(iterable)
try:
prev = next(iterator)
while True:
cur = next(iterator)
yield prev
prev = cur
except StopIteration:
return
然后你只需将 raw_data 包裹在里面:
for i, row in enumerate(remove_last_element(raw_data)):
# your code
最后一行将被自动忽略。
这种方法的好处是只读取文件一次。
