【问题标题】:Python import csv to lists with multiple rowsPython将csv导入具有多行的列表
【发布时间】:2015-07-23 23:33:14
【问题描述】:

我想导入一个包含 4 个值的 database.csv

key,email1,email2,email3
filename,email@example.com,email2@example.com,email3@example.com
filename2,email@yahoo.com,email@google.com,email@outlook.com
etc,etc,etc,etc

接下来我想将列键分隔为一个文件名列表,并将 email1、email2 和 email3 分隔到另一个列表

key = [filename]
emails = [email@example.com,email2@example.com,email3@example.com]

当前代码

import csv
with open('data.csv') as read_csv:
reader = csv.reader(read_csv)
for row in reader:
    key = row[0]
    emails = row[1::]
return key
return emails

输出是

key = [filename2]
emails = [filename2,email@yahoo.com,email@google.com,email@outlook.com]

我需要的是与电子邮件对应匹配以传递给另一个函数的键。

【问题讨论】:

    标签: python list csv dictionary import


    【解决方案1】:

    在这里,字典听起来是合适的解决方案。

    import csv
    result = {}
    with open('data.csv') as read_csv:
        reader = csv.reader(read_csv)
        for row in reader:
            result[row[0]] = row[1:]
    

    然后您可以随时访问或传递这样的值:

    result[filename2]
    

    【讨论】:

    • 啊,好点,我只是盲目地复制了那部分的 OP 代码。我会解决的。不在函数中,我们不需要返回部分。
    • 如何将“key”列分配给变量 key,将 email1、email2、email3 分配给变量“emails”?
    • 如果你不熟悉 Python 字典,我强烈建议你 read up on them - 如果我理解正确的话,它们非常有用,特别是对于你正在考虑做的事情。基本上在遍历每个“行”之后,您将拥有一个如下所示的结构:result = {'key1': [email1_a, email2_a, email3_a], 'key2': [email1_b, email2_b, email3_b]} 然后您可以使用 result['key1'] 从键中调用任何键值对,它会为您提供相应的列表。
    猜你喜欢
    • 2019-06-16
    • 2021-08-31
    • 2022-01-03
    • 2012-12-31
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2018-04-02
    相关资源
    最近更新 更多