📜  如何从本地文件中读取 csv - Python (1)

📅  最后修改于: 2023-12-03 14:51:48.149000             🧑  作者: Mango

如何从本地文件中读取 csv - Python

CSV(逗号分隔值)是一种广泛使用的数据格式。它非常适合用于处理数据集,如批量数据导入和导出。在 Python 中,我们可以使用内置的 CSV 模块来读取、写入和操作 CSV 文件。

本文将介绍如何在 Python 中从本地文件中读取 CSV 文件。在读取 CSV 文件的过程中,我们会逐步讲解一些重要的概念和函数,以帮助你更好地理解 CSV 文件的结构和操作方法。

读取 CSV 文件

首先,我们需要导入 Python 内置的 csv 模块。csv 模块提供了一系列函数用于读取和写入 CSV 文件。下面是一个简单的示例:

import csv

with open('file.csv', 'r') as csvfile:
    csvreader = csv.reader(csvfile)
    for row in csvreader:
        print(row)

在这个例子中,我们使用 Python 中的 open 函数打开一个 CSV 文件,并将其作为输入传递给 csv.reader 函数。我们使用 with 语句处理文件的打开和关闭,并使用 for 循环逐行读取 CSV 文件中的数据。

如果你运行上面的代码,你会发现输出是一个嵌套的列表,其中每个列表子项是 CSV 文件中的一行数据。

请注意,csv.reader 函数默认使用逗号作为分隔符。如果你的 CSV 文件使用不同的分隔符,比如制表符或分号,你需要明确告诉 csv.reader 函数。下面是一个使用制表符作为分隔符的示例:

import csv

with open('file.tsv', 'r') as csvfile:
    csvreader = csv.reader(csvfile, delimiter='\t')
    for row in csvreader:
        print(row)

在这里,我们通过将 delimiter 参数设置为 '\t' 来指定制表符作为分隔符。

跳过表头

通常情况下,CSV 文件的第一行是表头,包含了每一列的名称。在某些情况下,我们可能需要跳过表头并从第二行开始处理数据,比如在每列数据类型不同的情况下。

为了跳过表头,我们可以在循环读取 CSV 文件之前先调用 csvreader 对象的 __next__ 方法(Python 2.x 中为 next),即:

import csv

with open('file.csv', 'r') as csvfile:
    csvreader = csv.reader(csvfile)
    next(csvreader)  # 跳过表头
    for row in csvreader:
        print(row)

在这个例子中,我们使用 next 方法跳过了第一行表头。

指定列名

除了通过 __next__ 方法跳过表头之外,我们还可以使用 csv.DictReader 类来指定列名。csv.DictReader 类返回一个字典对象,其中键为列名,值为该列在当前行的值。

import csv

with open('file.csv', 'r') as csvfile:
    csvreader = csv.DictReader(csvfile)
    for row in csvreader:
        print(row)

在这个例子中,我们将 csv.DictReader 类作为 csv.reader 的替代品使用。输出的结果是一组字典,其中每个字典包含了 CSV 文件中每行数据的列名和值。

处理数据类型

在读取 CSV 文件时,我们有时需要将某些列的数据转换为特定的数据类型。例如,将字符串转换为整数或日期时间格式。

为了实现这一点,我们将使用 Python 自带的 int 函数和 datetime 模块。下面是一个计算整数列总和的示例:

import csv

with open('file.csv', 'r') as csvfile:
    csvreader = csv.DictReader(csvfile)
    total = 0
    for row in csvreader:
        total += int(row['column_name'])
    print(total)

在这个例子中,我们使用 Python 的 int 函数将 column_name 列中的每个值转换为整数,并累加到 total 变量中。

下面是一个将日期字符串转换为日期时间对象的示例:

import csv
from datetime import datetime

with open('file.csv', 'r') as csvfile:
    csvreader = csv.DictReader(csvfile)
    for row in csvreader:
        date = datetime.strptime(row['date_column'], '%Y-%m-%d')
        print(date)

在这里,我们使用 Python 的 datetime.strptime 函数将 date_column 列中的日期字符串转换为日期时间对象。

结论

在 Python 中读取 CSV 文件非常简单。我们只需要使用内置的 csv 模块,打开 CSV 文件并调用适当的函数。在读取 CSV 文件时,我们还可以跳过表头、指定列名和处理不同的数据类型。希望这篇文章能够帮助你更好地理解如何读取和处理 CSV 文件!