Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python附加到csv文件而不使用白线_Python_Python 2.7_Csv - Fatal编程技术网

Python附加到csv文件而不使用白线

Python附加到csv文件而不使用白线,python,python-2.7,csv,Python,Python 2.7,Csv,我正在用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

我正在用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);
CSV文件中此代码的输出(两轮后)为:

player1,10,10.0

player2,5,5.0

player1,20,15.0

播放器2,10,7.5

问题是每次脚本向csv文件追加数据时,数据之间都有一条白线。我只想在两轮之间加一条白线。因此,输出应如下所示:

播放器1,10,10.0
player2,5,5.0

播放器1,20,15.0
播放器2,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);

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);
在Python3中,可以读取的CSV模块发生了变化

Python2.x:

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);
只需将
open()
更改为二进制
open('data.csv','ab')

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

csv.writer(fp,分隔符=',',quoting=csv.QUOTE\u最小值)

从文档中,您可以选择:

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

csv.QUOTE_MINIMAL指示writer对象仅引用这些字段 包含特殊字符,如分隔符、引号或任何 行终止符中的字符数

csv.QUOTE\u NONNUMERIC指示writer对象引用所有非数值对象 田地

指示读取器将所有不带引号的字段转换为float类型

csv.QUOTE_NONE指示writer对象从不引用字段。什么时候 当前分隔符出现在输出数据中,它前面有 当前转义字符。如果未设置escapechar,则写入程序 如果有需要转义的字符被删除,将引发错误 遇到


上面的答案不起作用。应改用线终止符:

for player in self.players:
                a = csv.writer(fp, delimiter=',',lineterminator='\n');

这适用于python2和pytho3


此外,报价选项应与报价字符结合使用。如果没有使用quotechar,则Quote是过时的。

您的python版本是什么?我猜这段代码在一个函数中,并且您正在使用不同的值为每一轮调用该函数?是的,这是正确的,但我现在可以使用它了,我将更新我的脚本是的,我已经尝试过了,但我的版本是2.7,不支持“换行”