reader函数:读取CSV文件并转换为列表
在数据分析和数据科学领域中,CSV文件是一种常见的文件格式。CSV文件是以逗号分隔的值文件,它可以用于存储和系统之间交换电子表格或数据库文件。在Python编程语言中,有一个称为“csv ”的内置模块可用于读取和写入CSV文件。csv模块提供了各种函数和方法,其中之一是reader函数,它可以用于读取CSV文件并将其转换为一个列表。在这篇文章中,我们将讨论Python中的reader函数以及如何使用它读取CSV文件并将其转换为一个列表。
阅读CSV文件
在Python中使用reader函数读取CSV文件时,我们首先需要了解CSV文件的结构。CSV文件由多行和多列组成,其中每行表示数据的一条记录,每列则表示记录的一个属性。每行数据由逗号分隔,这是CSV文件的基本格式。下面是一个名为“data.csv”的示例CSV文件,它包含一组电影名称和评分:
The Shawshank Redemption,9.3 The Godfather,9.2 The Godfather: Part II,9.0 The Dark Knight,9.0 12 Angry Men,8.9 Schindler's List,8.9 The Lord of the Rings: The Return of the King,8.9 Pulp Fiction,8.9 The Good, the Bad and the Ugly,8.8 The Lord of the Rings: The Fellowship of the Ring,8.8
我们可以在Python中使用下面的代码片段来读取这个示例CSV文件:
import csv
with open('data.csv') as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
print(row)
这些代码将打开名为“data.csv”的CSV文件,并使用csv.reader函数将其读取。读取操作会将CSV文件中的每个行转化为一个列表,并打印出每一行。使用这种方法,打印结果会是以下内容:
['The Shawshank Redemption', '9.3'] ['The Godfather', '9.2'] ['The Godfather: Part II', '9.0'] ['The Dark Knight', '9.0'] ['12 Angry Men', '8.9'] ["Schindler's List", '8.9'] ['The Lord of the Rings: The Return of the King', '8.9'] ['Pulp Fiction', '8.9'] ['The Good, the Bad and the Ugly', '8.8'] ['The Lord of the Rings: The Fellowship of the Ring', '8.8']
在这个示例中,我们遍历整个CSV文件,将文件中的每一行转化为一个列表,并将列表打印出来。列表的每个元素代表一列数据。因为CSV文件的格式是由逗号分隔的值文件,csv.reader函数在默认情况下会使用逗号作为分隔符,因此每个列表元素之间都用逗号分隔。
为了更好地了解csv.reader函数的工作原理,让我们来看看它的几个关键点。
CSV阅读器和CSV写入器
csv模块提供了两个关键函数:csv.reader和csv.writer。csv.reader函数用于读取CSV文件并转换为一个嵌套的列表,而csv.writer函数用于写入数据到CSV文件。在下面的代码示例中,我们将讨论使用csv.reader读取CSV文件的方法。
csv.reader函数的语法如下:
csv.reader(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL, skipinitialspace=False)
该函数需要一个CSV文件作为输入,并使用delimiter参数指定列表元素之间使用的分隔符。quotechar参数指定在CSV文件中围绕文本字段使用的字符。quoting参数指定将包含逗号的字段包含在双引号中,在CSV文件中处理这些字段时会避免出现意外错误。skipinitialspace参数指定在处理每个列表元素时是否应跳过前导空格。默认情况下,quotechar的值为“"”,delimiter的值为“,”,quoting的值为csv.QUOTE_MINIMAL,而skipinitialspace的值为False。
在下面的示例中,这些参数的默认值被使用:
import csv
with open('data.csv') as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
print(row)
在这个示例中,我们首先打开一个名为“data.csv”的CSV文件,并使用csv.reader函数将其读取。遍历整个CSV文件,并将文件中的每一行转换为一个列表。该列表包含CSV文件每一行中的每个元素。最后,我们遍历整个列表并输出每一行。
列表嵌套和访问CSV数据
虽然csv.reader函数将CSV文件转换为一个列表,但它将它们存储为一个嵌套列表。这个嵌套列表由多个列表组成,其中每个列表代表CSV文件中的一行数据。
在上面的示例中,我们将在for循环中遍历整个CSV文件,将CSV每一行转化为一个嵌套的列表。然后,我们使用print函数来打印每个列表元素。在这个示例中,我们将打印以下内容:
['The Shawshank Redemption', '9.3'] ['The Godfather', '9.2'] ['The Godfather: Part II', '9.0'] ['The Dark Knight', '9.0'] ['12 Angry Men', '8.9'] ["Schindler's List", '8.9'] ['The Lord of the Rings: The Return of the King', '8.9'] ['Pulp Fiction', '8.9'] ['The Good, the Bad and the Ugly', '8.8'] ['The Lord of the Rings: The Fellowship of the Ring', '8.8']
在这个示例中,我们可以看到每行数据被转化为一个包含两个元素的列表。 个元素是电影的名称,第二个元素是电影的评分。
为了访问CSV文件中的任何数据,我们可以使用列表嵌套和Python索引的组合来获取数据。例如,要访问第二个电影的评分(即“The Godfather”的评分),我们可以使用以下代码:
import csv
with open('data.csv') as csv_file:
csv_reader = csv.reader(csv_file)
data = list(csv_reader)
# Accessing the second movie's rating
print(data[1][1])
在这个示例中,我们首先将CSV文件存储为一个嵌套列表并将其赋值给变量data。我们然后使用data[1][1]来获取第二部电影的评分(即data中的第二个列表中的第二个元素)。结果将是以下内容:
9.2
如果我们想要获取CSV文件中的其他数据,我们可以使用类似的方法访问它。例如,如果我们想要获取每个电影的名称,我们可以使用以下代码:
import csv
with open('data.csv') as csv_file:
csv_reader = csv.reader(csv_file)
data = list(csv_reader)
# Accessing all movie names
for i in range(0, len(data)):
print(data[i][0])
在这个示例中,我们使用了一个for循环和一个range函数来遍历整个列表,并输出每个列表中的 个元素。这些元素包含所有电影的名称。输出的结果将包括以下内容:
The Shawshank Redemption The Godfather The Godfather: Part II The Dark Knight 12 Angry Men Schindler's List The Lord of the Rings: The Return of the King Pulp Fiction The Good, the Bad and the Ugly The Lord of the Rings: The Fellowship of the Ring
总结
在Python中,csv模块可以用于读取和写入CSV文件。其中,csv.reader
