【问题标题】:create a list of tuples from csv file从 csv 文件创建元组列表
【发布时间】:2023-03-22 20:45:01
【问题描述】:

我是 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 模块??

标签: python list csv tuples


【解决方案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 模块。

      【讨论】:

        猜你喜欢
        • 2016-08-19
        • 2023-03-14
        • 1970-01-01
        • 2015-09-16
        • 2017-02-03
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        • 2020-08-04
        相关资源
        最近更新 更多