Python CSV Reader

来源:这里教程网 时间:2026-02-17 09:48:48 作者:

Python CSV Reader

在Python中,我们经常需要处理CSV文件,CSV(Comma-Separated Values)是一种常见的数据格式,用逗号将数据字段分隔开。Python中有一个内置的csv模块,可以帮助我们读取和处理CSV文件。在本文中,我们将详细介绍如何使用csv.reader来读取CSV文件,并提供一些示例代码来帮助您更好地理解。

1. 读取CSV文件

首先,我们需要导入csv模块,并使用csv.reader来读取CSV文件。下面是一个简单的示例代码,演示如何读取一个包含学生信息的CSV文件。

import csvwith open('students.csv', 'r') as file:    csv_reader = csv.reader(file)    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students.csv的CSV文件,并使用csv.reader来读取文件内容。然后,我们遍历每一行数据,并打印出来。

2. 指定分隔符

有时候,CSV文件的字段并不是用逗号分隔的,而是用其他字符分隔,比如分号或制表符。在这种情况下,我们可以通过指定delimiter参数来指定分隔符。下面是一个示例代码,演示如何读取一个使用分号分隔的CSV文件。

import csvwith open('students_semicolon.csv', 'r') as file:    csv_reader = csv.reader(file, delimiter=';')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_semicolon.csv的CSV文件,并通过delimiter=';'指定分号作为分隔符来读取文件内容。

3. 跳过标题行

有时候,CSV文件的第一行是标题行,包含了字段的名称,我们在读取文件时可能需要跳过这一行。我们可以通过在创建csv.reader对象时指定skipinitialspace=True参数来实现。下面是一个示例代码,演示如何跳过标题行。

import csvwith open('students_with_header.csv', 'r') as file:    csv_reader = csv.reader(file, skipinitialspace=True)    next(csv_reader)  # Skip the header row    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_header.csv的CSV文件,并使用skipinitialspace=True参数来跳过标题行。

4. 处理空行

有时候,CSV文件中会包含空行,我们在读取文件时可能需要跳过这些空行。我们可以通过在遍历行数据时添加一个判断条件来实现。下面是一个示例代码,演示如何处理包含空行的CSV文件。

import csvwith open('students_with_empty_lines.csv', 'r') as file:    csv_reader = csv.reader(file)    for row in csv_reader:        if row:            print(row)

在这个示例中,我们打开名为students_with_empty_lines.csv的CSV文件,并在遍历行数据时添加了一个判断条件if row来处理空行。

5. 指定行数范围

有时候,我们可能只需要读取CSV文件中的部分数据,比如指定行数范围。我们可以通过使用itertools.islice来实现。下面是一个示例代码,演示如何读取CSV文件中的指定行数范围。

import csvimport itertoolswith open('students.csv', 'r') as file:    csv_reader = csv.reader(file)    for row in itertools.islice(csv_reader, 1, 4):  # Read rows 2 to 4        print(row)

在这个示例中,我们打开名为students.csv的CSV文件,并使用itertools.islice来读取第2行到第4行的数据。

6. 处理引号

有时候,CSV文件中的字段可能包含引号,我们在读取文件时可能需要处理这些引号。我们可以通过在创建csv.reader对象时指定quotechar参数来处理。下面是一个示例代码,演示如何处理包含引号的CSV文件。

import csvwith open('students_with_quotes.csv', 'r') as file:    csv_reader = csv.reader(file, quotechar='"')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_quotes.csv的CSV文件,并使用quotechar='"'参数来处理包含引号的字段。

7. 处理转义字符

有时候,CSV文件中的字段可能包含转义字符,比如\n表示换行符,我们在读取文件时可能需要处理这些转义字符。我们可以通过在创建csv.reader对象时指定escapechar参数来处理。下面是一个示例代码,演示如何处理包含转义字符的CSV文件。

import csvwith open('students_with_escape.csv', 'r') as file:    csv_reader = csv.reader(file, escapechar='\\')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_escape.csv的CSV文件,并使用escapechar='\\'参数来处理包含转义字符的字段。

8. 指定行结束符

有时候,CSV文件中的行可能使用不同的行结束符,比如\r\n或\n,我们在读取文件时可能需要处理这些不同的行结束符。我们可以通过在创建csv.reader对象时指定lineterminator参数来处理。下面是一个示例代码,演示如何处理不同行结束符的CSV文件。

import csvwith open('students_with_different_line_endings.csv', 'r') as file:    csv_reader = csv.reader(file, lineterminator='\r\n')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_different_line_endings.csv的CSV文件,并使用lineterminator='\r\n'参数来处理不同行结束符的文件。

9. 处理非ASCII字符

有时候,CSV文件中的字段可能包含非ASCII字符,比如中文或特殊符号,我们在读取文件时可能需要处理这些非ASCII字符。我们可以通过在创建csv.reader对象时指定encoding参数来处理。下面是一个示例代码,演示如何处理包含非ASCII字符的CSV文件。

import csvwith open('students_with_non_ascii.csv', 'r', encoding='utf-8') as file:    csv_reader = csv.reader(file)    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_non_ascii.csv的CSV文件,并使用encoding='utf-8'参数来处理包含非ASCII字符的文件。

10. 处理缺失值

有时候,CSV文件中的某些字段可能是空的,我们在读取文件时可能需要处理这些缺失值。我们可以通过在遍历行数据时添加一个判断条件来处理。下面是一个示例代码,演示如何处理包含缺失值的CSV文件。

import csvwith open('students_with_missing_values.csv', 'r') as file:    csv_reader = csv.reader(file)    for row in csv_reader:        cleaned_row = [value if value else 'N/A' for value in row]        print(cleaned_row)

在这个示例中,我们打开名为students_with_missing_values.csv的CSV文件,并在遍历行数据时使用列表推导式来处理缺失值,将空值替换为N/A。

11. 指定字段名

有时候,我们希望将CSV文件中的字段名作为字典的键,这样可以更方便地访问数据。我们可以通过在创建csv.DictReader对象时指定fieldnames参数来实现。下面是一个示例代码,演示如何读取包含字段名的CSV文件。

import csvwith open('students_with_header.csv', 'r') as file:    csv_reader = csv.DictReader(file)    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_header.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键。

12. 指定字段名和分隔符

有时候,我们希望将CSV文件中的字段名作为字典的键,并且文件使用不同的分隔符。我们可以通过在创建csv.DictReader对象时指定fieldnames和delimiter参数来实现。下面是一个示例代码,演示如何读取包含字段名和不同分隔符的CSV文件。

import csvwith open('students_semicolon_with_header.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'], delimiter=';')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_semicolon_with_header.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并且指定分号作为分隔符。

13. 指定字段名和跳过标题行

有时候,我们希望将CSV文件中的字段名作为字典的键,并且跳过标题行。我们可以通过在创建csv.DictReader对象时指定fieldnames和skipinitialspace=True参数来实现。下面是一个示例代码,演示如何读取包含字段名和跳过标题行的CSV文件。

import csvwith open('students_with_header.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'], skipinitialspace=True)    next(csv_reader)  # Skip the header row    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_header.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并且跳过标题行。

14. 指定字段名和处理空行

有时候,我们希望将CSV文件中的字段名作为字典的键,并且处理空行。我们可以通过在遍历行数据时添加一个判断条件来实现。下面是一个示例代码,演示如何读取包含字段名和处理空行的CSV文件。

import csvwith open('students_with_empty_lines.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'])    for row in csv_reader:        if row['Name']:  # Check if 'Name' field is not empty            print(row)

在这个示例中,我们打开名为students_with_empty_lines.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并在遍历行数据时添加了一个判断条件来处理空行。

15. 指定字段名和处理引号

有时候,我们希望将CSV文件中的字段名作为字典的键,并且处理包含引号的字段。我们可以通过在创建csv.DictReader对象时指定fieldnames和quotechar参数来实现。下面是一个示例代码,演示如何读取包含字段名和处理引号的CSV文件。

import csvwith open('students_with_quotes.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'], quotechar='"')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_quotes.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并指定引号作为引用符号。

16. 指定字段名和处理转义字符

有时候,我们希望将CSV文件中的字段名作为字典的键,并且处理包含转义字符的字段。我们可以通过在创建csv.DictReader对象时指定fieldnames和escapechar参数来实现。下面是一个示例代码,演示如何读取包含字段名和处理转义字符的CSV文件。

import csvwith open('students_with_escape.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'], escapechar='\\')    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_escape.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并指定转义字符。

17. 指定字段名和处理非ASCII字符

有时候,我们希望将CSV文件中的字段名作为字典的键,并且处理包含非ASCII字符的字段。我们可以通过在创建csv.DictReader对象时指定fieldnames和encoding参数来实现。下面是一个示例代码,演示如何读取包含字段名和处理非ASCII字符的CSV文件。

import csvwith open('students_with_non_ascii.csv', 'r', encoding='utf-8') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'])    for row in csv_reader:        print(row)

在这个示例中,我们打开名为students_with_non_ascii.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并指定编码格式为utf-8。

18. 指定字段名和处理缺失值

有时候,我们希望将CSV文件中的字段名作为字典的键,并且处理缺失值。我们可以通过在遍历行数据时添加一个判断条件来处理。下面是一个示例代码,演示如何读取包含字段名和处理缺失值的CSV文件。

import csvwith open('students_with_missing_values.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'])    for row in csv_reader:        cleaned_row = {key: value if value else 'N/A' for key, value in row.items()}        print(cleaned_row)

在这个示例中,我们打开名为students_with_missing_values.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并在遍历行数据时使用字典推导式来处理缺失值,将空值替换为N/A。

19. 指定字段名和处理空行

有时候,我们希望将CSV文件中的字段名作为字典的键,并且处理空行。我们可以通过在遍历行数据时添加一个判断条件来处理。下面是一个示例代码,演示如何读取包含字段名和处理空行的CSV文件。

import csvwith open('students_with_empty_lines.csv', 'r') as file:    csv_reader = csv.DictReader(file, fieldnames=['Name', 'Age', 'Grade'])    for row in csv_reader:        if any(row.values()):  # Check if any value in the row is not empty            print(row)

在这个示例中,我们打开名为students_with_empty_lines.csv的CSV文件,并使用csv.DictReader来读取文件内容,字段名将作为字典的键,并在遍历行数据时添加了一个判断条件来处理空行。

相关推荐