kat*_*e88 3 python csv tuples list
我是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
Run Code Online (Sandbox Code Playgroud)
然后我想保存文件
def save_file(filename, data_list):
fp = open(filename, 'w')
for line in data_list:
fp.write(','.join(line) + '\n')
fp.close()
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的代码返回一个列表列表,而不是一个元组列表...有没有办法在不使用csv模块的情况下创建一个包含多个元组的列表?
split 返回一个列表,如果你想要一个元组,将它转换为一个元组:
data_list.append(tuple(line.strip().split(',')))
Run Code Online (Sandbox Code Playgroud)
请使用该csv模块.
第一个问题:为什么列表清单不好?在"鸭子打字"的意义上,这应该是好的,所以也许你再想一想.
如果你真的需要一个元组列表 - 只需要进行小的更改.
改变线
data_list.append(line.strip().split(','))
Run Code Online (Sandbox Code Playgroud)
至
data_list.append(tuple(line.strip().split(',')))
Run Code Online (Sandbox Code Playgroud)
而已.
如果您想要摆脱自定义代码(代码更少代码更好),您可以坚持使用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]
Run Code Online (Sandbox Code Playgroud)
我在这里使用列表理解,它非常简洁易懂.
另外,我使用with-statement,它会关闭你的文件指针,即使你的代码中发生了异常.使用with外部资源(如文件)时请始终使用.