[英]writing into a csv file with python
这是我的小程序。 最后,我想将名称和密码写入 csv 文件,如下所示:
Jack,9978
Sara,1647
但我不能?:我的程序 output 是正确的,但是当我将它写入 csv 时,它就像:
Jack9978,Sara1674
你将如何解决它?
import hashlib
import csv
answer = []
usr_pas = []
with open('...', 'r') as f:
reader = csv.reader(f)
for word in reader:
usr_pas.append(word)
for i in range(999, 10000):
num = str(i)
m = hashlib.sha256()
m.update(num.encode('utf-8'))
hsh = m.hexdigest()
hash_dict = {hsh: num}
for key in list(hash_dict.items()):
for value in usr_pas:
if key[0] == value[1]:
answer.append(value[0] +','+ key[1])
file = open("...", 'w', newline='')
with file:
writer = csv.writer(file)
writer.writerow(i.strip().replace(',', '') for i in answer)
file.close()
我做错了什么??
试试这个(更改注释的行):
import hashlib
import csv
answer = []
usr_pas = []
with open('...', 'r') as f:
reader = csv.reader(f)
for word in reader:
usr_pas.append(word)
for i in range(999, 10000):
num = str(i)
m = hashlib.sha256()
m.update(num.encode('utf-8'))
hsh = m.hexdigest()
hash_dict = {hsh: num}
for key in list(hash_dict.items()):
for value in usr_pas:
if key[0] == value[1]:
answer.append(value[0] +','+ key[1] + '\n') #added '\n' at the end
file = open("...", 'w', newline='')
with file:
writer = csv.writer(file)
writer.writerow(i for i in answer) #removed i.replace
file.close()
我猜你想要一个多行而不是一行的 csv 文件。 如果是这样,我的建议是使用csv.csvwriter.writerows
而不是csv.csvwriter.writerow
。 后者旨在写入单行。 请参阅此处的官方文档。 确实可以使用\n
操纵器创建多行,这意味着具有多个元素的单行包含“新行”,这看起来很尴尬。
由于我们可以使用默认分隔符(逗号),我们只需要将行中的每个元素作为元组(或列表)进行管理。 答案应该像这样添加到列表answer
中:
answer.append((value[0], key[1]))
当我们以这种方式写行时:
writer.writerows(answer)
让我们把它们放在一起:
import hashlib
import csv
answer = []
usr_pas = []
with open('...', 'r') as f:
reader = csv.reader(f)
for word in reader:
usr_pas.append(word)
for i in range(999, 10000):
num = str(i)
m = hashlib.sha256()
m.update(num.encode('utf-8'))
hsh = m.hexdigest()
hash_dict = {hsh: num}
for key in list(hash_dict.items()):
for value in usr_pas:
if key[0] == value[1]:
# answer.append(value[0] +','+ key[1])
answer.append((value[0], key[1]))
file = open("...", 'w', newline='')
with file:
writer = csv.writer(file)
# writer.writerow(i.strip().replace(',', '') for i in answer)
writer.writerows(answer)
file.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.