我正在尝试编写一个代码,要求用户输入用户名和密码,然后将这些代码存储在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,密码
如果您能提供任何帮助,请提前致谢:)
答案 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的串联,您将其作为用户名返回给用户。