从 csv 文件创建元组列表

Posted

技术标签:

【中文标题】从 csv 文件创建元组列表【英文标题】:create a list of tuples from csv file 【发布时间】:2013-03-15 00:18:37 【问题描述】:

我是 python 初学者,努力在 python 中创建和保存包含来自 csv 文件的元组的列表。

我现在得到的代码是:

def load_file(filename):
    fp = open(filename, 'Ur')
    data_list = []
    for line in fp:
        data_list.append(line.strip().split(','))
    fp.close()
    return data_list

然后我想保存文件

def save_file(filename, data_list):
    fp = open(filename, 'w')
    for line in data_list:
        fp.write(','.join(line) + '\n')
    fp.close()

不幸的是,我的代码返回的是列表列表,而不是元组列表...有没有办法在不使用 csv 模块的情况下创建一个包含多个元组的列表?

【问题讨论】:

除非我遗漏了一些细微之处——你所做的只是复制文件? 为什么不使用 csv 模块?? 【参考方案1】:

第一个问题:为什么列表列表不好?在“鸭式打字”的意义上,这应该没问题,所以也许你再考虑一下。

如果您确实需要元组列表 - 只需进行少量更改。

换行

        data_list.append(line.strip().split(','))

        data_list.append(tuple(line.strip().split(',')))

就是这样。

如果您想摆脱自定义代码(代码越少越好),您可以坚持使用csv-module。我强烈建议使用尽可能多的库方法。

为了炫耀一些高级 Python 功能:您的 load_file-方法也可能如下所示:

def load_file(filename):
    with open(filename, 'Ur') as fp:
        data_list = [tuple(line.strip().split(",") for line in fp]

我这里使用列表推导式,非常简洁易懂。

此外,我使用with-statement,它会关闭你的文件指针,即使你的代码中发生了异常。在处理文件等外部资源时,请始终使用with

【讨论】:

【参考方案2】:

只需将“tuple()”包裹在line.strip().split(',') 周围,您就会得到一个元组列表。您可以在 this runnable gist 中看到它的实际效果。

【讨论】:

【参考方案3】:

split返回一个列表,如果你想要一个元组,把它转换成一个元组:

    data_list.append(tuple(line.strip().split(',')))

请使用csv 模块。

【讨论】:

以上是关于从 csv 文件创建元组列表的主要内容,如果未能解决你的问题,请参考以下文章

从三个单独的列表创建一个 .csv 文件

根据对象列表创建一个csv文件C#

从 CSV 文件构建列表列表

如何创建具有从 csv 文件中的列表收集的唯一名称值的类的多个对象

使用python将csv文件转换为元组列表

OpenCSV:如何使用自定义列标题和自定义列位置从 POJO 创建 CSV 文件?