📜  在Python中从 CSV 文件中读取行

📅  最后修改于: 2022-05-13 01:57:53.728000             🧑  作者: Mango

在Python中从 CSV 文件中读取行

CSV 代表逗号分隔值。此文件格式是一个带分隔符的文本文件,它使用逗号作为分隔符来分隔其中存在的文本。或者换句话说,CSV 文件用于以表格形式存储数据。根据建议的名称,此文件包含用逗号分隔的数据,文件的每一行都被视为一条记录。我们可以从记事本或使用 excel 创建 CSV 文件。

例子:

Geeks,for,geeks
one,of,the,
top,learning,platform

我们可以使用以下方式创建 CSV 文件:

1. 使用记事本:我们可以使用记事本创建一个 CSV 文件。在记事本中,打开一个新文件,其中以逗号分隔值,并以 .csv 扩展名保存文件。

2. 使用 Excel:我们也可以使用 Excel 创建 CSV 文件。在 Excel 中,打开一个新文件,在其中指定不同单元格中的每个值,并将其保存为 CSV 文件类型。

要在Python中逐行读取 CSV 文件中的数据,我们可以使用 CSV 模块中存在的 reader 和 DictReader 允许我们逐行获取数据。

使用阅读器

使用阅读器,我们可以在 CSV 文件的行之间作为值列表进行迭代。它遍历 CSV 文件中的所有行,并将每行中的数据作为列表获取。 reader() 方法存在于 CSV 库中。所以要使用这种阅读器方法,首先我们需要导入 CSV 库。 reader 对象接受一个名为 fileObject 的参数(一个保存 CSV 文件的变量)。

句法:

读取 CSV 文件的步骤:

例子:

考虑一个名为“samplecsv.csv”的 CSV 文件。该文件包含以下数据:

with open('filename') as fileObject
Python3
with open(r'path/filename') as fileObject 


Python3
reader_obj = csv.reader(file_obj)


Python3
Id,Name,Rating
1,Akhil,4
2,Babu,3
3,Nikhil,5


输出:

# Python program to read CSV file line by line
# import necessary packages
import csv
  
# Open file 
with open('samplecsv.csv') as file_obj:
      
    # Create reader object by passing the file 
    # object to reader method
    reader_obj = csv.reader(file_obj)
      
    # Iterate over each row in the csv 
    # file using reader object
    for row in reader_obj:
        print(row)

读取没有标题的CSV文件

上面的例子一切都很好,但是如果我们不想获取列名或者我们可以说我们不想读取文件的标题,那么我们在创建文件对象之前使用 next() 方法reader 对象,以便它跳过标题。

Python3

# Python program to read CSV file without header
  
# Import necessary packages
import csv
  
# Open file
with open('samplecsv.csv') as file_obj:
      
    # Skips the heading
    # Using next() method
    heading = next(file_obj)
      
    # Create reader object by passing the file 
    # object to reader method
    reader_obj = csv.reader(file_obj)
      
    # Iterate over each row in the csv file 
    # using reader object
    for row in reader_obj:
        print(row)

输出:

# Python3 program to read CSV file using DictReader
  
# Import necessary packages
import csv
  
# Open file
with open('samplecsv.csv') as file_obj:
      
    # Create reader object by passing the file
    # object to DictReader method
    reader_obj = csv.DictReader(file_obj)
      
    # Iterate over each row in the csv file
    # using reader object
    for row in reader_obj:
        print(row)

说明:上面的代码与上面例子中的代码几乎相同,但稍有变化的是我们在这里使用了 next函数,它可以帮助我们在访问 CSV 文件中的数据时跳过列名,即第一行。如果需要列名,那么我们从标题对象访问它们,即返回下一个方法的结果。

使用字典阅读器

当使用 reader() 方法时,我们可以将 CSV 文件作为列表进行迭代,但使用 DictReader 类对象,我们可以将 CSV 文件作为字典逐行迭代。这个 DictReader 方法存在于 csv 库中。因此,要首先使用它,我们需要导入 csv 库。 DictReader() 接受一个名为 fileObject 的参数(一个保存 csv 文件的变量)。

句法

读取 CSV 文件的步骤:

例子:

Python3

['Id', 'Name', 'Rating']
['1', 'Akhil', '4']
['2', 'Babu', '3']
['3', 'Nikhil', '5']

输出:

# Python program to read CSV file without header
  
# Import necessary packages
import csv
  
# Open file
with open('samplecsv.csv') as file_obj:
      
    # Skips the heading
    # Using next() method
    heading = next(file_obj)
      
    # Create reader object by passing the file 
    # object to reader method
    reader_obj = csv.reader(file_obj)
      
    # Iterate over each row in the csv file 
    # using reader object
    for row in reader_obj:
        print(row)

说明:在代码中,首先我们加载了名为 samplecsv.csv 的 CSV 文件,然后创建了一个可以迭代以获取每一行的 reader_object。返回结果以键值对的形式表示为字典。因此,我们使用 DictReader 逐行读取数据作为字典。