2017-02-27 103 views
1

我目前正试图让领导委员会的工作。排行榜只会存储分数。我正在尝试将分数写入csv文件。这里是我写的代码:Python 2.7 CSV写入格式不正确

if col: 
    with open("rec_Scores.csv", "a") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow(str(curr_score) + "\n") 
    crashed = True 

当此运行CSV文件结束这样的:https://gyazo.com/19c9007827498fb5cf847535167d5841

我认为它与分数做被转换成字符串,但是当我没有转换的得分,我得到的错误:

Traceback (most recent call last): 
    File "C:\Users\Harry\Desktop\Desktop\Computing Project\Galaxian.py", line 173, in <module> 
    w.writerow(curr_score + "\n") 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

这是第一次,我一直使用CSV文件在Python,所以我可能已经做了一个小愚蠢的错误,但任何帮助将非常感激。谢谢。

+0

只是删除'+“\ n”'和再试一次。 – roganjosh

回答

3

您不需要自己添加换行符(\n)。 csv.writer将为您做到这一点。

if col: 
    with open("rec_Scores.csv", "ab") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow(curr_score) 
    crashed = True 

奇怪的结果,当您转换curr_score为字符串你得到的是,因为在python字符串是可迭代的(你可以说for char in "abc":)。 writerow被设置为接受一个迭代器,为迭代器的每个成员在行中创建一个字段。所以writerow认为你想要一些列,每列包含一个字符。

如果你想添加一个字符串作为行的唯一元素,你需要把它们放在另一个迭代,例如,一个元组:

if col: 
    with open("rec_Scores.csv", "ab") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow((str(curr_score),)) #note the extra brackets and comma 
    crashed = True 
+0

我试过这段代码,它已经排序了数字的间距,但是每行之间仍然有间隔。 https://gyazo.com/f308088038cc214588918c7aba40cb9f 你能帮我解决这个问题吗?如果你知道为什么会发生这种情况,无论哪种方式,谢谢你向我解释为什么这些数字全部分开。 –

+0

@HarryBeggs您发布的代码只写入一个值。请张贴编写第二个号码的代码。 – RoadieRich

+0

该屏幕截图是在两次运行后,没有任何其他写入。谢谢 编辑:刚刚跑了第三次,仍然有空间发生。 –