尝试从输入写入 csv,csv 输出文件显示每个名称在字母和 1 行中的空行之间带有冒号
Trying to write to csv from input , csv output file shows each name with colons between letters and emtpy line in 1 row
import csv
n = int(input("How many records ?"))
b = 0
for i in range(n):
s = input("what is the name of the student ")
g = input(" grade ?")
k.append(s),k.append(g)
print("res",'[%s]'%', '.join(map(str, k)))
StuGrade = "StuGrade.csv"
with open(StuGrade, 'w' ) as f :
thewriter = csv.writer(f)
thewriter.writerow( k[0])
for i in range(n*2-1) :
b=b+1
thewriter.writerow( k[b])
这是我程序的输出:
How many records 1
what is the name of the student ahmad
grade ? 3
res [ahmad , 3]
csv 文件如下所示:
a,h,m,a,d,
,3
我想要这样:
ahmad
3
csv.writerow()
获取该行的值列表 - 您提供的是单个值。字符串是可迭代的——如果你给 csv.writerow()
一个字符串,它将使用每个字母作为 1 列。您可以解决将其作为 1 个元素列表提供的问题:
thewriter.writerow( [ k[b] ] ) # 1 element list
要正确写入 csv(每行有单个值或多个值和多行),您在打开文件时缺少 newline=""
(这有据可查)以正确创建 csv 文件 - 丢失这会在您当前的输出中引入空行。
with open(StuGrade, 'w', newline = "") as f : # add newline = ""
您真的不需要 csv 编写器来创建每行 1 个内容的文件:
with open("file.txt","w") as f:
for word in k: # dont use index iterating, use element itering
f.write(word + "\n")
会做的。
Fix/Demo 每行 2 个值:
import csv
k = ["ABC","5", "BCD","7", "CDE","42"]
StuGrade = "StuGrade.csv"
with open(StuGrade, 'w', newline = "") as f : # added newline
thewriter = csv.writer(f)
# go over the range of input indexes and increase by 2
for idx in range(0, len(k), 2):
# slice and write 2 values as 2 columns from your k list at once
thewriter.writerow( k[idx : idx+2])
print(open("StuGrade.csv").read())
输出:
ABC,5
BCD,7
CDE,42
import csv
n = int(input("How many records ?"))
b = 0
for i in range(n):
s = input("what is the name of the student ")
g = input(" grade ?")
k.append(s),k.append(g)
print("res",'[%s]'%', '.join(map(str, k)))
StuGrade = "StuGrade.csv"
with open(StuGrade, 'w' ) as f :
thewriter = csv.writer(f)
thewriter.writerow( k[0])
for i in range(n*2-1) :
b=b+1
thewriter.writerow( k[b])
这是我程序的输出:
How many records 1 what is the name of the student ahmad grade ? 3 res [ahmad , 3]
csv 文件如下所示:
a,h,m,a,d,
,3
我想要这样:
ahmad
3
csv.writerow()
获取该行的值列表 - 您提供的是单个值。字符串是可迭代的——如果你给 csv.writerow()
一个字符串,它将使用每个字母作为 1 列。您可以解决将其作为 1 个元素列表提供的问题:
thewriter.writerow( [ k[b] ] ) # 1 element list
要正确写入 csv(每行有单个值或多个值和多行),您在打开文件时缺少 newline=""
(这有据可查)以正确创建 csv 文件 - 丢失这会在您当前的输出中引入空行。
with open(StuGrade, 'w', newline = "") as f : # add newline = ""
您真的不需要 csv 编写器来创建每行 1 个内容的文件:
with open("file.txt","w") as f:
for word in k: # dont use index iterating, use element itering
f.write(word + "\n")
会做的。
Fix/Demo 每行 2 个值:
import csv
k = ["ABC","5", "BCD","7", "CDE","42"]
StuGrade = "StuGrade.csv"
with open(StuGrade, 'w', newline = "") as f : # added newline
thewriter = csv.writer(f)
# go over the range of input indexes and increase by 2
for idx in range(0, len(k), 2):
# slice and write 2 values as 2 columns from your k list at once
thewriter.writerow( k[idx : idx+2])
print(open("StuGrade.csv").read())
输出:
ABC,5
BCD,7
CDE,42