Python 2.7 CSV写入格式不正确

时间:2017-02-27 19:15:27

标签: python csv formatting

我目前正试图让领导委员会工作。排行榜只会存储得分。我正在尝试将分数写入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'

这是我第一次使用Python中的csv文件,所以我可能犯了一个小傻错,但任何帮助都会非常感激。感谢。

1 个答案:

答案 0 :(得分: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设置为接受iterable,在iterable的每个成员的行中创建一个字段。所以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