从csv文件创建元组列表

时间:2013-03-25 13:27:25

标签: python list csv tuples

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

3 个答案:

答案 0 :(得分:8)

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

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

请使用csv模块。

答案 1 :(得分:7)

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

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

更改行

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

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

就是这样。

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

要展示一些高级Python功能:您的load_file - 方法也可能如下所示:

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

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

此外,我使用with - 语句,即使代码中发生异常,也会关闭文件指针。使用外部资源(如文件)时,请始终使用with

答案 2 :(得分:1)

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