我正在用 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
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 Instructs writer objects to quote all fields.
csv.QUOTE_MINIMAL Instructs writer objects to only quote those fields which contain special characters such as delimiter, quotechar or any of the characters in lineterminator.
csv.QUOTE_NONNUMERIC Instructs writer objects to quote all non-numeric fields.
Instructs the reader to convert all non-quoted fields to type float.
csv.QUOTE_NONE Instructs writer objects to never quote fields. When the current delimiter occurs in output data it is preceded by the current escapechar character. If escapechar is not set, the writer will raise Error if any characters that require escaping are encountered.
关于Python附加到没有白线的csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21432610/