7

我有这样的代码在python中编写csv文件

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

图像输出

输出如图所示。现在输出中有一个额外的行(第 3 行)。如何在编写 csv 文件时删除最后一个空行。

4

3 回答 3

5

用于file.seek将文件指针移到最后一个之前\r\n,然后使用file.truncate.

import os
import csv

with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
    csvfile.seek(-2, os.SEEK_END) # <---- 2 : len('\r\n')
    csvfile.truncate()            # <----

注意-2如果您使用不同的lineterminator. 我使用了-2因为 \r\n是默认的 lineterminator。

于 2013-10-11T08:46:58.393 回答
2

这是一个使用 rstrip 从 csv 的最后一行删除换行符的解决方案:

def remove_last_line_from_csv(filename):
    with open(filename) as myFile:
        lines = myFile.readlines()
        last_line = lines[len(lines)-1]
        lines[len(lines)-1] = last_line.rstrip()
    with open(filename, 'w') as myFile:    
        myFile.writelines(lines)
于 2018-09-04T13:30:37.113 回答
1
with open('eggs.csv', 'wb',newline='') as csvfile:
于 2020-07-27T13:31:53.063 回答