Python附加到csv文件没有whiteline
我正在用python写一个游戏。在游戏的每一轮(是的,游戏有多轮)之后,我想将数据写入CSV文件。Python附加到csv文件没有whiteline
这是我的代码:
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
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);
的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);
与Python 3还有就是CSV模块中的变化,你可以阅读here
的Python 2。 x:
只要改变open()
为二进制open('data.csv', 'ab')
您可以设置控制使用引用:
csv.writer(fp, delimiter=',',quoting=csv.QUOTE_MINIMAL)
正如从文档的选项有:
csv.QUOTE_ALL指示作家反对报价所有领域。
csv.QUOTE_MINIMAL指示写入器对象仅引用那些含有特殊字符,如分隔符,或quotechar的字符在lineterminator任何 字段 。
csv.QUOTE_NONNUMERIC指示编写器对象引用所有非数字 字段。
指示读者将所有未引用的字段转换为float类型。
csv.QUOTE_NONE指示编写器对象永远不会引用字段。当 当前分隔符出现在输出数据中时,它前面有 当前的escapechar字符。如果没有设置escapechar,那么作家 将会出现错误,如果任何需要转义的字符遇到 。
是的,我已经尝试过,但我的版本是2.7和“新行”不支持 – bbvanee
@bbvanee看到我编辑关于打开为'ab' –
什么是您的Python版本? –
我的版本是2.7 – bbvanee
我猜这个代码是在一个函数中,并且你正在为每一轮使用不同的值调用该函数? – 2014-01-29 13:47:12