欢迎访问宙启技术站
智能推送

10个Python函数帮助你轻松读取和操作CSV文件

发布时间:2023-05-28 19:28:19

CSV(逗号分隔值)是一种常见的数据格式,用于存储在电子表格和数据库中。Python提供了众多函数和库,使得从CSV文件中读取和处理数据变得非常容易。在本篇文章中,我们将介绍10个Python函数,这些函数可以帮助你轻松读取和操作CSV文件。

1. csv.reader()

csv.reader()函数是Python内置的一个功能强大的CSV模块中的函数。它可以从CSV文件中读取行,并将其转换为Python列表或元组对象。以下是使用csv.reader()函数读取文件的基本示例:

import csv

with open('data.csv', newline='') as csvfile:

    reader = csv.reader(csvfile, delimiter=',', quotechar='"')

    for row in reader:

        print(row)

在上面的示例中,我们打开了名为data.csv的文件,并使用csv.reader()函数将其读入。我们还使用delimiter参数来指定分隔符,我们使用逗号作为分隔符。我们使用quotechar参数来指定引用字符,我们使用引号作为引用字符。最后,我们循环遍历文件中的每一行,并将其打印。

2. csv.DictReader()

csv.DictReader()函数与csv.reader()函数类似,只不过它返回的是一个有序字典(OrderedDict)而不是列表。这个有序字典将文件头中的列名作为键,将每一行中的值作为对应键的值。以下是使用csv.DictReader()函数的示例:

import csv

with open('data.csv', newline='') as csvfile:

    reader = csv.DictReader(csvfile, delimiter=',', quotechar='"')

    for row in reader:

        print(row)

在上面的示例中,我们使用csv.DictReader()函数打开名为data.csv的文件。我们使用delimiter和quotechar参数指定分隔符和引用字符。然后,我们循环遍历文件中的每一行,并将其打印为一个有序字典。

3. csv.writer()

csv.writer()函数与csv.reader()函数一样重要。这个函数可以将Python列表或元组对象写入CSV文件。以下是使用csv.writer()函数写入文件的示例:

import csv

with open('output.csv', 'w', newline='') as csvfile:

    writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    writer.writerow(['Name', 'Age', 'Country'])

    writer.writerow(['John Smith', '24', 'USA'])

    writer.writerow(['Alice Brown', '32', 'Canada'])

在上面的示例中,我们打开了名为output.csv的文件,使用csv.writer()函数写入文件。我们使用delimiter和quotechar参数指定分隔符和引用字符。我们还使用quoting参数来指定引用方式,这里我们使用了csv.QUOTE_MINIMAL。然后,我们使用writerow()函数将行写入文件。

4. csv.DictWriter()

csv.DictWriter()函数与csv.writer()函数类似,它可以将有序字典写入CSV文件。以下是使用csv.DictWriter()函数的示例:

import csv

with open('output.csv', 'w', newline='') as csvfile:

    fieldnames = ['Name', 'Age', 'Country']

    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()

    writer.writerow({'Name': 'John Smith', 'Age': '24', 'Country': 'USA'})

    writer.writerow({'Name': 'Alice Brown', 'Age': '32', 'Country': 'Canada'})

在上面的示例中,我们打开了名为output.csv的文件,使用csv.DictWriter()函数写入文件。我们定义了一个fieldnames变量,它包含了列名。我们使用writerow()函数将行写入文件,并使用字典作为参数。

5. pandas.read_csv()

pandas.read_csv()函数是用于从CSV文件中读取数据的常见函数。这个函数是使用pandas库实现的,它返回一个DataFrame对象,这个对象可以方便地处理和操作数据。以下是使用pandas.read_csv()函数读取文件的示例:

import pandas as pd

df = pd.read_csv('data.csv')

print(df)

在上面的示例中,我们使用pandas.read_csv()函数打开名为data.csv的文件,并将其读取到一个DataFrame对象中。我们使用print()函数打印输出这个对象。

6. pandas.DataFrame.to_csv()

pandas.DataFrame.to_csv()函数是用于将DataFrame对象写入CSV文件的常见函数。以下是使用pandas.DataFrame.to_csv()函数写入文件的示例:

import pandas as pd

df = pd.DataFrame({'Name': ['John Smith', 'Alice Brown'], 'Age': ['24', '32'], 'Country': ['USA', 'Canada']})

df.to_csv('output.csv', index=False)

在上面的示例中,我们创建了一个包含Name、Age和Country列的DataFrame对象,使用to_csv()函数将其写入名为output.csv的文件。我们使用index=False参数指定不包含索引列。

7. csv.field_size_limit()

csv.field_size_limit()函数用于设置CSV文件中每一行的字段大小限制。默认情况下,这个限制是131072字节(128KB),如果需要读取更大的文件,则需要增加这个限制。以下是使用csv.field_size_limit()函数设置大小限制的示例:

import csv

csv.field_size_limit(100000000)

在上面的示例中,我们使用csv.field_size_limit()函数将字段大小限制设置为100000000字节(100MB)。这个函数必须在读取CSV文件之前调用。

8. csv.unregister_dialect()

csv.unregister_dialect()函数用于删除已经注册过的dialect(风格)对象。以下是使用csv.unregister_dialect()函数删除dialect对象的示例:

import csv

csv.unregister_dialect('excel-tab')

在上面的示例中,我们使用csv.unregister_dialect()函数删除名为excel-tab的dialect对象。这个函数必须在使用这个dialect对象之前调用。

9. csv.register_dialect()

csv.register_dialect()函数用于注册新的dialect对象。这个函数可以自定义分隔符、引用字符和转义字符等参数。以下是使用csv.register_dialect()函数注册新的dialect对象的示例:

import csv

csv.register_dialect('my_dialect', delimiter='|', quotechar='"')

在上面的示例中,我们使用csv.register_dialect()函数注册名为my_dialect的新dialect对象。我们使用delimiter和quotechar参数指定分隔符和引用字符。

10. csv.list_dialects()

csv.list_dialects()函数用于列出Python中已经注册的dialect对象。以下是使用csv.list_dialects()函数列出dialect对象的示例:

import csv

print(csv.list_dialects())

在上面的示例中,我们使用csv.list_dialects()函数列出所有已经注册的dialect对象。

总结

Python提供了许多强大的函数和库,使得从CSV文件中读取和处理数据变得非常容易。在本篇文章中,我们介绍了10个Python函数,这些函数可以帮助你轻松读取和操作CSV文件。我们希望你现在可以更加容易地处理CSV文件了。