从 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 文件创建元组列表的主要内容,如果未能解决你的问题,请参考以下文章