我在用蟒蛇写游戏。在每一轮游戏之后(是的,游戏有多轮),我想把数据写到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文件中此代码的输出(经过两轮后)是:
玩家1,10,10.0 运动员2,5,5.0 运动员1,20,15.0 玩家2,10,7.5
问题是,每当脚本将数据附加到csv文件时,数据之间就会有一行白线。我唯一想加白线的时候是在两圈之间。因此,输出应该如下所示:
玩家1,10,10.0 运动员2,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);
发布于 2014-01-29 13:35:55
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模块中读取here。
Python2.x:
只需将open()
更改为二进制open('data.csv', 'ab')
即可
可以使用以下方法设置控件引用:
csv.writer(fp, delimiter=',',quoting=csv.QUOTE_MINIMAL)
作为文档,您的选项是:
csv.QUOTE_ALL指示编写器对象引用所有字段。 csv.QUOTE_MINIMAL指示编写器对象只引用那些包含特殊字符的字段,例如分隔符、商标符或行终止符中的任何字符。 csv.QUOTE_NONNUMERIC指示编写器对象引用所有非数字字段. 指示读取器将所有非引用字段转换为浮动类型。 csv.QUOTE_NONE指示编写器对象永远不要引用字段。当输出数据中出现当前分隔符时,它前面是当前转义符字符。如果未设置转义符,则如果遇到任何需要转义的字符,则写入器将引发错误。
发布于 2021-04-23 08:01:16
上面的答案不起作用。您应该使用行终止符来代替:
for player in self.players:
a = csv.writer(fp, delimiter=',',lineterminator='\n');
这既适用于python2也适用于3。
此外,报价选项应与引用字符一起使用。如果没有使用验证码,引用就过时了。
https://stackoverflow.com/questions/21432610
复制相似问题