如何在单独的列中写入csv文件?

时间:2017-10-08 16:47:40

标签: python python-3.x csv

我正在尝试编写一个代码,要求用户输入用户名和密码,然后将这些代码存储在2个单独列中的csv文件中。我尝试了很多不同的方法,但似乎无法做到:/

username = input ("What is your first name (or username)? ")
 username = (username[0:3])
 birthyear = input ("What year were you born? ")
 birthyear = (birthyear[2:4])
 print (("Your username is ") + (username) + (birthyear))
 login = (username) + (birthyear)
 newpassword = input ("Please create a password ")
 with open ("scores.csv", "a") as scoreFile:
     scoreFileWriter = csv.writer(scoreFile)
     scoreFileWriter.writerow(username + "," + newpassword+"\n")
     scoreFile.close()

这是我尝试过的一种方法,但它会将每个字母写在不同的列中,如下所示:

b o b,p a s s w o r d

而不是:

bob,密码

如果您能提供任何帮助,请提前致谢:)

4 个答案:

答案 0 :(得分:1)

您应指定','的分隔符。 https://docs.python.org/3/library/csv.html

scoreFileWriter = csv.writer(scoreFile, delimiter=',')

此外,以纯文本形式讲述密码是非常糟糕的做法(TM)。

答案 1 :(得分:0)

看起来在这行中你自己做的是逗号,这就是csv编写器将为你做的事情(如@Pipupnipup所说,指定一个分隔符)

你应该只输入一个列表并让它处理换行符和逗号:

scoreFileWriter.writerow([username, newpassword])

迭代:以明文形式存储密码是Very Bad Practice(TM)。

答案 2 :(得分:0)

工作代码:

username = input ("What is your first name (or username)? ")
 username = (username[0:3])
 birthyear = input ("What year were you born? ")
 birthyear = (birthyear[2:4])
 print (("Your username is ") + (username) + (birthyear))
 login = (username) + (birthyear)
 newpassword = input ("Please create a password ")
 with open ("scores.csv", "a") as scoreFile:
     scoreFileWriter = csv.writer(scoreFile, delimiter=',')
     scoreFileWriter.writerow([login, newpassword])
     scoreFile.close()

答案 3 :(得分:0)

关于你陈述的问题.writerow()需要一个序列('',(),[])。 当您传递字符串时,序列writerow()不会遍历字符串中的每个字母,并且每个字母都会写入CSV中的单独单元格。通过提供[username,newpassword],您可以提供序列。

另请注意,您传递的是原始用户名,作为输入的字符串,而不是用户名+ birthyear的串联,您将其作为用户名返回给用户。