繁体   English   中英

从csv文件创建元组列表

[英]create a list of tuples from csv file

我是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模块的情况下创建一个包含多个元组的列表?

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

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

请使用csv模块。

第一个问题:为什么列表清单不好? 在“鸭子打字”的意义上,这应该是好的,所以也许你再想一想。

如果你真的需要一个元组列表 - 只需要进行小的更改。

改变线

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

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

而已。

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

要展示一些高级Python功能: load_file -method也可能如下所示:

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

我在这里使用列表理解,它非常简洁易懂。

另外,我使用with -statement,它会关闭你的文件指针,即使你的代码中发生了异常。 请始终使用with外部资源的工作时,像文件。

只需在line.strip().split(',')周围包装“tuple()”,你就会得到一个元组列表。 你可以在这个可运行的要点中看到它的实际效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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