如何在 Python 中读取 CSV 文件?


CSV 文件代表逗号分隔值文件。它是一个纯文本文件,其中数据值用逗号分隔,因此以纯文本的形式表示表格数据,并借助逗号进行分隔。CSV 文件具有 .csv 扩展名。

以下是 CSV 文件的外观:

Sr.No,Name,City,Age
1,Rahul,Kolkata,21
2,Karan,Amritsar,23
3,Priya,Bangalore,20

要创建 CSV 文件,您只需在记事本中以上述格式编写文件,并将其保存为 .csv 扩展名即可。

在 Python 中读取 CSV 文件

存储在系统本地存储中的 csv 文件可以使用 Python 读取。

我们需要在 Python 中导入 csv 模块。然后我们需要以读取模式打开文件,因为我们需要从文件中读取数据。csv.reader() 函数用于读取 CSV 文件中的数据。csv.reader() 返回一个可迭代的读取器对象。我们需要遍历返回的可迭代读取器对象来处理 csv 文件的内容。

实现

让我们有一个名为“ttp.csv”的 csv 文件存储在我们的本地系统中。文件内容在上面的示例中显示。我们需要读取此文件的内容并逐行打印文件的内容。

示例

import csv
with open('ttp.csv','r')as file:
   filecontent=csv.reader(file)
   for row in filecontent:
   print(row)

注意:确保 csv 文件和 Python 程序位于系统中的同一位置,即同一文件夹中。

输出

['Sr.No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

逐行解释

  • import csv - 需要在 Python 中导入 csv 模块,以便使用此模块中包含的函数来读取文件。

  • 使用 open() 打开文件。open() 接受两个参数,文件名和要打开它的模式。这里的模式是“r”,因为我们需要读取文件。

  • 使用 csv.reader() 读取文件内容。这将返回一个可迭代的读取器对象,该对象将返回到一个变量。

  • 遍历 filecontents 以逐行打印文件内容。

csv 文件和读取它的 Python 程序必须位于同一位置。

要求 csv 文件和 Python 程序位于同一位置或本地系统中的同一文件夹中。如果文件位于其他位置,则会引发异常并给出以下输出。

Traceback (most recent call last):
   with open('ttp.csv','r')as file:
FileNotFoundError: [Errno 2] No such file or directory: 'ttp.csv'

使用自定义分隔符读取 CSV 文件

逗号不是 csv 文件中唯一使用的分隔符。其他使用的分隔符是:、;、| 等。如果使用其他分隔符而不是逗号,我们需要相应地修改代码。

实现

假设在上面的 csv 文件中,使用的分隔符是“:”而不是逗号。因此代码将修改如下:

示例

import csv
with open('ttp.csv','r')as file:
   filecontent=csv.reader(file,delimiter=':')
   for row in filecontent:
      print(row)

输出

['Sr', 'No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

代码中唯一的修改是在 csv.reader() 中指定 csv 文件中使用的分隔符。如果使用的分隔符是“|”,则需要在代码中将其指定为分隔符。

如果未指定,则默认情况下代码只会将逗号视为分隔符,并且由于文件中不存在逗号,因此整行将被视为单个项目。

如果未在上述代码中为上述使用“:”分隔符的文件指定分隔符,则会产生以下错误输出。

['Sr:No:Name:City:Age']
['1:Rahul:Kolkata:21']
['2:Karan:Amritsar:23']
['3:Priya:Bangalore:20']

如上述输出所示,整行被视为单个项目。

更新于: 2021-03-11

4K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告