Python附加到没有whiteline的csv文件

bbv*_*nee 6 python csv python-2.7

我正在用python编写游戏.在每轮游戏之后(是的,游戏有多轮)我想将数据写入CSV文件.

这是我的代码:

with open('data.csv', 'a') as fp:
            for player in self.players:
                a = csv.writer(fp, delimiter=',');
                data = [[player.name, player.penalty(), player.score()]];
                a.writerows(data);
Run Code Online (Sandbox Code Playgroud)

CSV文件中此代码的输出(两轮后)是:

player1,10,10.0

player2,5,5.0

player1,20,15.0

player2,10,7.5

问题是每次脚本将数据附加到csv文件时,数据之间都会有一条白线.而且我唯一想要追加白线的时间是两轮之间.所以输出应该如下所示:

player1,10,10.0
player2,5,5.0

player1,20,15.0
player2,10,7.5

有没有办法可以做到这一点?

我的新工作代码:

with open('take5.csv', 'ab') as fp:
            for player in self.players:
                a = csv.writer(fp, delimiter=',');
                data = [[player.name, player.penalty(), player.score()]];
                a.writerows(data);
            white_row = ['\n'];
            a.writerows(white_row);
Run Code Online (Sandbox Code Playgroud)

Kob*_*i K 12

Python 3:

with open('data.csv', 'a', newline='') as fp:
    for player in self.players:
        a = csv.writer(fp, delimiter=',');
        data = [[player.name, player.penalty(), player.score()]];
        a.writerows(data);
Run Code Online (Sandbox Code Playgroud)

使用python 3,您可以在此处阅读CSV模块的更改

Python 2.x:

只需更改open()为二进制open('data.csv', 'ab')

您可以使用以下命令设置控件引用:

csv.writer(fp, delimiter=',',quoting=csv.QUOTE_MINIMAL)

从文档中您可以选择:

csv.QUOTE_ALL指示writer对象引用所有字段.

csv.QUOTE_MINIMAL指示writer对象仅引用包含特殊字符的字段,例如delimiter,quotechar或lineterminator中的任何字符.

csv.QUOTE_NONNUMERIC指示writer对象引用所有非数字字段.

指示读者将所有非引用字段转换为float类型.

csv.QUOTE_NONE指示writer对象从不引用字段.当输出数据中出现当前分隔符时,它前面是当前的escapechar字符.如果未设置escapechar,则在遇到需要转义的任何字符时,编写器将引发Error.