gpt4 book ai didi

python - _csv.错误 : sequence expected [Python]

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:01 28 4
gpt4 key购买 nike

这是我的全部代码:

import csv

def numbersOut():
for i in range (1, 1001):
out.writerow("%s" % (i+1, ))
out.writerow("\n")

csvname = raw_input("Enter desired filename: ")
headers = ["ID", "Student", "Grade"]

out = csv.writer(open(csvname + ".csv","w"), delimiter=',', lineterminator='\n', quoting=csv.QUOTE_ALL)
out.writerow(headers)
out.writerow(numbersOut())

抛出“预期序列”错误的部分是第 14 行,即这一行:out.writerow(numbersOut())

基本上,我要做的是使用函数 numbersOut() 将 1000 行放入 CSV 文件中,每行都有自己的 ID(第 1 行(减去标题)将 = 1 ,第 2 行将 = 2,等等)。我设法通过使用范围将它们全部放在一行中,但这不是我所需要的。

但是,我在尝试使用我的函数时不断收到错误消息。我不确定这是我调用它的方式有问题还是函数本身有问题。

有什么想法吗?如果有什么需要澄清的,请询问;我有不讲道理的习惯。

提前致谢!

编辑:追溯,按要求:

Traceback (most recent call last):
File "writer.py", line 14, in <module>
out.writerow(numbersOut())
_csv.Error: sequence expected

最佳答案

在 Python 中,如果一个函数从末尾掉落而没有返回,则假定返回 None。您的 numbersOut() 函数不会返回任何东西。所以,当你写

out.writerow(numbersOut())

您最终调用了 out.writerow(None)。这会给你你看到的错误,因为 None 不是一个序列并且 csv 模块不知道如何写出 None 作为一行 CSV 数据。

我认为你最好声明 numbersOut 以将 out 作为参数:

def numbersOut(out):
for i in range (1, 1001):
out.writerow("%s" % (i+1, ))
out.writerow("\n")

然后调用它

numbersOut(out)

我建议进行另外几项更改。

如果只想将单个值写入一行,请替换该行

        out.writerow("%s" % (i+1, ))

        out.writerow(["%s" % (i+1, )])

(注意插入的 [])。writerow 获取一系列值并将每个值写出到一个单独的逗号分隔单元格中。如果您传递单个字符串,它会被解释为一个字符序列,并且每个字符都在其自己的单元格中结束。

其次,我建议删除行 out.writerow("\n")。当您使用 writerow 写入一行时,csv 模块将为您输出行尾。您无需手动结束行。事实上,out.writerow("\n") 行最终写入了一个单元格,该单元格在包含数字的每一行之间包含一个换行符。

关于python - _csv.错误 : sequence expected [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com