Python - 将CSV转换为列表的方法

149 阅读3分钟

问题的提出

将一个CSV文件转换为

  • 一个字典的列表
  • 一个图元的列表
  • 列表的列表

让我们逐一来看看这些难题。

💫 注意:我只向你展示每个问题的最Pythonic的解决方案--基于我的个人观点--并在适用时向你推荐更详细的教程。

用Python将CSV转换为字典列表

下面是一个CSV文件的内容,"my_file.csv" ,用于我们下面的代码片段。

Name,Job,Age,Income
Alice,Programmer,23,110000
Bob,Executive,34,90000
Carl,Sales,45,50000

如何在Python中把这个文件转换成如下的字典列表?

[{'Name': 'Alice', 'Job': 'Programmer', 'Age': '23', 'Income': '110000'}{'Name': 'Bob', 'Job': 'Executive', 'Age': '34', 'Income': '90000'}{'Name': 'Carl', 'Job': 'Sales', 'Age': '45', 'Income': '50000'}]

下面是将该 CSV 文件转换成字典列表的代码,通过使用csv.DictReader(file) 函数每行一个字典

import csv


csv_filename = 'my_file.csv'

with open(csv_filename) as f:
    reader = csv.DictReader(f)

lst = list(*reader)

字典是一个数据结构,它将键映射到值。

前面的代码片段的结果是一个字典的列表。CSV的第一行被用作头,以确定字典的键,这些键被映射到CSV文件的各个行中定义的值。

[{'Name': 'Alice', 'Job': 'Programmer', 'Age': '23', 'Income': '110000'}{'Name': 'Bob', 'Job': 'Executive', 'Age': '34', 'Income': '90000'}{'Name': 'Carl', 'Job': 'Sales', 'Age': '45', 'Income': '50000'}]

csv.DictReader(f) 方法需要一个文件对象f 作为输入参数。因此,你首先需要使用内置的Python [open()](https://blog.finxter.com/python-open-function/)函数打开文件。

如何在Python中把一个CSV文件转换成一个列表?

给定一个CSV文件(例如,存储在文件名为'my_file.csv' )。

INPUT: file 'my_file.csv'

挑战:如何将其转换为一个列表(=嵌套的列表),即把行的值放到内部列表中?

OUTPUT: Python list of lists

要在纯 Python 中把 CSV 读取到一个嵌套的列表中,用以下方法打开文件 [open('my_file.csv')](https://blog.finxter.com/python-open-function/)读取所有行到一个变量中,使用 [f.readlines()](https://blog.finxter.com/how-to-read-first-n-lines-of-a-file-in-python/).现在,遍历所有的行,用......剥离它们的空白。 [strip()](https://blog.finxter.com/python-string-strip/)将它们从空白处剥离,并在分隔符','[split(',')](https://blog.finxter.com/python-string-split/).

你可以在一个简单的列表理解语句中完成这个任务,就像这样。

csv_filename = 'my_file.csv'

with open(csv_filename) as f:
    lines = f.readlines()
    lst = [line.strip().split(',') for line in lines]

输出结果是。

print(lst)
# [['9', '8', '7'], ['6', '5', '4'], ['3', '2', '1']]

在Python中把CSV转换为图元列表

给定一个CSV文件(例如,存储在文件名为'my_file.csv' )。

INPUT: file 'my_file.csv'

挑战:如何将CSV文件转换为图元列表,即把行值放到内部图元中?

OUTPUT: Python list of tuples

要在 Python 中把 CSV 文件'my_file.csv' 转换为图元的列表,可以使用csv.reader(file_obj) 创建一个 CSV 文件阅读器,该阅读器持有一个列表的迭代器,每行一个。

现在,使用 list(tuple(line) for line in reader)表达式和一个生成器表达式,将每个内部列表转换为元组。

这里有一个简单的例子,用这种方法将我们的 CSV 文件转换为一个嵌套的列表。

import csv


csv_filename = 'my_file.csv'

with open(csv_filename) as f:
    reader = csv.reader(f)
    lst = list(tuple(line) for line in reader)

输出结果是。

print(lst)
# [('9', '8', '7'), ('6', '5', '4'), ('3', '2', '1')]

深度学习算法得到的大部分积极反馈都是讽刺性的时候,就很难对它们进行训练。