我们经常需要处理csv文件来分析与商业问题相关的数据。在这篇文章中,我们将讨论如何在python中把csv文件读成一个列表。
使用CSV.reader()将CSV读入列表中
Python 为我们提供了 csv 模块来处理 python 中的 csv 文件。为了从csv 文件中获取数据,我们经常使用一个在csv.reader() 方法帮助下创建的阅读器对象。
在创建了一个阅读器对象之后,我们可以将csv文件读成一个列表。为此,我们将首先使用open() 函数在读取模式下打开 csv 文件。open() 函数把 csv 文件的文件名作为它的第一个输入参数,把字面意思 "r" 作为它的第二个输入参数,表示该文件将以只读模式打开。执行后,open() 方法返回一个指向csv文件的文件对象。
现在,我们将把这个文件对象传递给reader() 方法,以创建一个读者对象。读者对象实际上是一个迭代器,它包含了csv文件的每一行,作为一个列表。我们可以使用for循环访问csv文件的每一行,并将其读入一个列表,如下所示。
import csv
myFile = open('Demo.csv', 'r')
reader = csv.reader(myFile)
myList = []
for record in reader:
myList.append(record)
print("The list of lists is:")
print(myList)
输出。
The list of lists is:
[['Roll', 'Name', 'Language'], ['1', 'Aditya', 'Python'], ['2', 'Sam', ' Java'], ['3', ' Chris', ' C++']]
如果你想跳过csv文件的头,你可以使用 next() 函数来完成。next() 函数,当对一个迭代器执行时,从迭代器中返回一个元素,并将迭代器移到下一个元素。在for循环之外,你可以使用一次next() 函数,将csv文件读成一个没有标题的列表,如下所示。
import csv
myFile = open('Demo.csv', 'r')
reader = csv.reader(myFile)
print("The header is:")
print(next(reader))
myList = []
for record in reader:
myList.append(record)
print("The list of lists is:")
print(myList)
输出。
The header is:
['Roll', 'Name', 'Language']
The list of lists is:
[['1', 'Aditya', 'Python'], ['2', 'Sam', ' Java'], ['3', ' Chris', ' C++']]
你可以使用list() 构造函数,而不是使用for循环从读者对象中读取csv文件。在这里,我们将把阅读器对象传递给list() 构造函数,它将返回一个列表,如下所示。
import csv
myFile = open('Demo.csv', 'r')
reader = csv.reader(myFile)
myList = list(reader)
print("The list of lists is:")
print(myList)
输出。
The list of lists is:
[['Roll', 'Name', 'Language'], ['1', 'Aditya', 'Python'], ['2', 'Sam', ' Java'], ['3', ' Chris', ' C++']]
同样地,你可以使用list() 构造函数以及next() 方法和csv.reader() 方法来读取一个没有头的csv文件,如下:
import csv
myFile = open('Demo.csv', 'r')
reader = csv.reader(myFile)
print("The header is:")
print(next(reader))
myList = list(reader)
print("The list of lists is:")
print(myList)
输出结果。
The header is:
['Roll', 'Name', 'Language']
The list of lists is:
[['1', 'Aditya', 'Python'], ['2', 'Sam', ' Java'], ['3', ' Chris', ' C++']]
结论
在这篇文章中,我们讨论了在 python 中把 csv 文件读成一个列表的不同方法。
我希望你喜欢阅读这篇文章。