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.0player1,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.