繁体   English   中英

使用 python 写入 csv 文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM