迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中逐行读取 CSV

作者:迹忆客 最近更新:2023/12/21 浏览次数:

在 Python 中,读取文件并按列打印是很常见的。但是有时逐行读取文件可能会有点混乱。

本文将介绍如何在 Python 中逐行读取 CSV 文件。我们将使用 Python csv 模块来处理 Python 中的 CSV 文件。

在逐行读取 CSV 文件之前,让我们先看一下 CSV 文件的文件格式。这将帮助我们以更好的方式操作 CSV 文件。


CSV 文件的文件结构

CSV 代表逗号分隔值;它是一种将数据存储在表中的简单文件格式。这些表格可以是电子表格或数据库的形式。

我们还可以在简单的文本编辑器(如记事本)中制作 CSV 文件。每个 CSV 文件行对应表的一条记录。

此外,每条记录都有一个或多个字段。字段和记录的横截面称为单元格。这些字段由逗号 (,) 分隔。

有时,我们也将此逗号称为分隔符。请注意,此格式的名称来自使用逗号作为字段分隔符。CSV 文件因其与许多程序、数据库、电子表格和文字处理软件的兼容性而被广泛使用。

现在让我们使用上述文件结构创建一个 CSV 文件。创建文件后,我们将使用不同的函数逐行读取 CSV 文件。

我们可以使用 Microsoft Excel 中的电子表格创建 CSV 文件。但是,如果你的系统中没有安装 Microsoft Excel,你可以使用记事本或其他文本编辑器来制作 CSV 文件。

我们可以将文件扩展名更改为 .csv 来执行此操作。另外,不要忘记遵循 CSV 文件的格式。这是我们需要执行的所有步骤。

  • 打开文本编辑器并以正确的 CSV 格式编写内容。标题以及记录以逗号分隔。每条记录都以新行开始。如下所示:

    Roll Number,Name,Subject
    1,Harry Potter,Magical Creatures
    2,Ron Weasley,Divination
    3,Hermione Granger,Dark arts
    

将此文件另存为 Demo.csv。CSV 文件将成功创建。

我们可以使用 open() 函数在 Python 中打开 CSV 文件。但是,我们更喜欢使用专门为此目的制作的 python csv 模块。要使用 csv 模块,我们必须先导入它。

import csv

我们将使用我们已经创建的 Demo.csv 文件进行演示。该文件如下所示:

Roll Number,Name,Subject
1,Harry Potter,Magical Creatures
2,Ron Weasely,Divination
3,Hermione Granger,Dark arts

为了在 Python 中逐行读取这个 CSV 的内容,我们将使用 csv 模块,该模块进一步提供了两个类。这些类是 csv.readercsv.DictReader

让我们一一来看这些类。


在 Python 中使用 csv.reader 逐行读取 CSV 文件

csv 模块的 csv.reader 类使我们能够读取和迭代 CSV 文件中的行作为值列表。看下面的例子:

from csv import reader

# open file
with open("Demo.csv", "r") as my_file:
    # pass the file object to reader()
    file_reader = reader(my_file)
    # do this for all the rows
    for i in file_reader:
        # print the rows
        print(i)

我们使用 reader 对象来遍历 Demo.csv 文件的行。reader 对象充当迭代器。这样可以确保一次只有一行留在内存中。

输出:

['Roll Number', 'Name', 'Subject']
['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']

让我们看看这里使用的函数。

Python 的 open() 函数用于打开文件。一旦它打开一个文件,它就会返回一个文件对象。

语法:

open(file_name, mode)

参数 mode 指定我们要打开文件的模式。它可以是 readappendwritecreate

reader() 函数用于读取文件。它返回一个可迭代的阅读器对象。在上面的例子中,这个可迭代的对象是 file_reader,从 for 循环的使用中必须清楚。

在上面的示例中,还打印了标题。我们也可以打印没有标题的 CSV 文件。看下面的例子:

from csv import reader

# skip the first line(the header)
with open("Demo.csv", "r") as my_file:
    file_csv = reader(my_file)
    head = next(file_csv)

    # check if the file is empty or not
    if head is not None:
        # Iterate over each row
        for i in file_csv:
            # print the rows
            print(i)

输出:

['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']

此处不打印标题。这种方法的工作原理与前一种方法类似,只是我们在迭代期间跳过了第一行。我们使用了 next() 函数来跳过标题。

Python 中的 next() 函数返回迭代器中存在的下一项。其语法如下所述。

语法:

next(iterable_object / iterable, default)

Iterableiterable object 是我们必须迭代的一组值。default 是一个可选参数,如果 iterable 到达其末尾,则它会返回该参数。


在 Python 中使用 DictReader 对象逐行读取 CSV 文件

csv.reader 读取并打印 CSV 文件作为列表。

但是,DictReader 对象将 CSV 文件的行作为字典进行迭代。csv.reader 将每一行作为列表返回,ObjectReader 将每一行作为字典返回。

看下面的例子:

from csv import DictReader

# open the file
with open("Demo.csv", "r") as my_file:
    # passing file object to DictReader()
    csv_dict_reader = DictReader(my_file)

    # iterating over each row
    for i in csv_dict_reader:
        # print the values
        print(i)

输出:

{'Roll Number': '1', 'Name': 'Harry Potter', 'Subject': 'Magical Creatures'}
{'Roll Number': '2', 'Name': 'Ron Weasley', 'Subject': 'Divinition'}
{'Roll Number': '3', 'Name': 'Hermione Granger', 'Subject': 'Dark arts'}

DictReader 函数类似于 reader 函数,不同之处在于它返回信息的方式。它将值映射并返回为字典,其中字段名称充当字典的键,值由特定行中的数据组成。


结论

在本文中,我们讨论了 CSV 的基础知识。我们还看到了在 Python 中逐行读取 CSV 的两种方法。我们还了解了如何使用记事本等文本编辑器自行创建 CSV 文件。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中读取文件的第一行

发布时间:2023/12/24 浏览次数:156 分类:Python

本教程演示了如何在 Python 中读取文本文件的第一行。在 Python 中,我们有内置的函数可以处理不同的文件操作。

在 Python 中将浮点数写入文件

发布时间:2023/12/24 浏览次数:96 分类:Python

了解如何在 Python 中将浮点数写入文件。Python 使将数据写入文件成为一项无缝任务。数据以字符串的形式写入文件。

如何在 Python 中从文件读取特定行

发布时间:2023/12/24 浏览次数:76 分类:Python

Python 具有从文件读取特定行的不同方法,例如,小文件使用 fileobject.readlines(),重复文件使用 linecache,大文件使用 enumerate()。

Python 中的最大整数

发布时间:2023/12/24 浏览次数:54 分类:Python

本教程解释了在不同版本的 Python 中,最大整数值的概念。本教程将讨论不同版本 Python 中的最大整数值,以及我们如何获取它。

在 Python 字典中按值查找键

发布时间:2023/12/23 浏览次数:112 分类:Python

本教程演示了如何在 Python 字典中按值获取键。字典是一个键值对中的元素集合。字典中存储的元素是无序的。

在 Python 中枚举字典

发布时间:2023/12/23 浏览次数:159 分类:Python

本教程演示了如何在 Python 中使用带字典的枚举函数。Python 中的 enumerate() 函数返回一个枚举类型的对象,并添加一个计数器变量来迭代一个列表或其他类型的集合。

在 Python 中更改字典值

发布时间:2023/12/23 浏览次数:138 分类:Python

本教程演示了如何在 Python 中更改字典值。本教程将探讨 Python 字典中改变特定键值的多种方法。我们可以通过使用下面的方法来实现。

在 Python 中保存字典到文件

发布时间:2023/12/23 浏览次数:159 分类:Python

本教程演示了如何在 Python 中把字典保存到文件中。本教程讲解了用 Python 语言将字典保存到文件的多种方法。方法包括

按键值顺序绘制 Python 字典

发布时间:2023/12/23 浏览次数:83 分类:Python

本教程介绍了如何在 python 中绘制一个字典。本教程介绍了如何使用 Python 的 matplotlib 库中的 pyplot 模块在 Python 中绘制一个字典。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便