如何在 Python 中读取 CSV 文件CSV文件读写
什么是 CSV 文件?
CSV 文件 是一种简单类型的纯文本文件,它使用特定的结构来排列表格数据。 CSV 文件的标准格式由行和列数据定义,其中换行符终止每一行以开始下一行,每一列在行内用逗号分隔。
CSV 是一种常见的数据交换格式,因为它紧凑、简单且通用。许多在线服务允许其用户将表格数据从网站导出到 CSV 文件中。 CSV 文件将在 Excel 中打开,几乎所有数据库都有一个工具可以允许从 CSV 文件导入。
在本教程中,您将学习:
- 什么是 CSV 文件?
- CSV 示例文件
- Python CSV 模块
- CSV 模块函数
- 如何在 Python 中读取 CSV 文件
- 如何在 Python 中将 CSV 文件读入字典
- 如何在 Python 中编写 CSV 文件
- 使用 Pandas 读取 CSV 文件
- 使用 Pandas 编写 CSV 文件
CSV 示例文件
表格形式的数据也称为 CSV(逗号分隔值)——字面意思是“逗号分隔值”。这是一种用于显示表格数据的文本格式。文件的每一行是表格的一行。各个列的值由分隔符分隔 - 逗号 (,)、分号 (;) 或其他符号。 CSV可以很容易被Python读取和处理。
考虑下表
表格数据
编程语言 | 设计者 | 出现 | 扩展 |
---|---|---|---|
Python | 吉多·范罗苏姆 | 1991 | .py |
Java | 詹姆斯·高斯林 | 1995 | .java |
C++ | 比亚恩·斯特劳斯特鲁普 | 1983 | .cpp |
您可以在 csv 中表示此表,如下所示。
CSV 数据
编程语言、设计、出现、扩展
Python,Guido van Rossum,1991,.py
Java,詹姆斯·高斯林,1995,.java
C++,Bjarne Stroustrup,1983,.cpp
如您所见,每一行都是一个新行,每一列用逗号分隔。这是 CSV 文件外观的示例。
下载 CSV 数据
Python CSV 模块
Python 提供了一个 CSV 模块来处理 CSV 文件。要读取/写入数据,您需要遍历 CSV 的行。您需要使用 split 方法从指定列中获取数据。
CSV 模块函数
在 CSV 模块文档中,您可以找到以下功能:
- csv.field_size_limit - 返回最大字段大小
- csv.get_dialect – 获取与名称相关的方言
- csv.list_dialects - 显示所有注册方言
- csv.reader – 从 csv 文件中读取数据
- csv.register_dialect – 将方言与名称关联
- csv.writer – 将数据写入 csv 文件
- csv.unregister_dialect – 删除与方言注册表名称关联的方言
- csv.QUOTE_ALL – 引用所有内容,无论类型如何。
- csv.QUOTE_MINIMAL – 引用带有特殊字符的字段
- csv.QUOTE_NONNUMERIC – 引用所有非数字值的字段
- csv.QUOTE_NONE – 不要在输出中引用任何内容
在本教程中,我们将只关注读取器和写入器函数,它们允许您编辑、修改和操作 CSV 文件中的数据。
如何在 Python 中读取 CSV 文件
以下是在 Python 中读取 CSV 文件的步骤。
步骤 1) 要从 CSV 文件中读取数据,必须使用 reader 函数生成 reader 对象。
开发阅读器功能以获取文件的每一行并列出所有列。然后,您必须选择要为其提供可变数据的列。
这听起来比实际复杂得多。让我们看一下这个读取 CSV 文件的 Python 代码,我们会发现处理 csv 文件并没有那么难。
#import necessary modules import csv with open('X:\data.csv','rt')as f: data = csv.reader(f) for row in data: print(row)
步骤 2) 当你执行上面的程序时,输出将是:
['Programming language; Designed by; Appeared; Extension'] ['Python; Guido van Rossum; 1991; .py'] ['Java; James Gosling; 1995; .java'] ['C++; Bjarne Stroustrup;1983;.cpp']
如何在 Python 中将 CSV 文件读入字典
您也可以使用 DictReader 读取 CSV 文件。结果被解释为一个字典,其中标题行是键,其他行是值。
考虑以下代码
#import necessary modules import csv reader = csv.DictReader(open("file2.csv")) for raw in reader: print(raw)
这段代码的结果是:
OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')]) OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')]) OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])
这种从 CSV 文件中读取数据的方法比以前的方法要容易得多。但是,这并不是读取数据的最佳方式。
如何在 Python 中编写 CSV 文件
以下是如何在 Python 中编写 CSV 文件:
当您有一组数据要存储在 CSV 文件中时,您必须使用 writer() 函数。要在行(行)上迭代数据,您必须使用 writerow() 函数。
考虑以下示例。我们将数据写入文件“writeData.csv”,其中分隔符是撇号。
#import necessary modules import csv with open('X:\writeData.csv', mode='w') as file: writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) #way to write to csv file writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension']) writer.writerow(['Python', 'Guido van Rossum', '1991', '.py']) writer.writerow(['Java', 'James Gosling', '1995', '.java']) writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])
csv文件中的结果是:
Programming language, Designed by, Appeared, Extension Python, Guido van Rossum, 1991, .py Java, James Gosling, 1995, .java C++, Bjarne Stroustrup,1983,.cpp
使用 Pandas 读取 CSV 文件
Pandas 是一个开源库,允许您在 Python 中导入 CSV 并执行数据操作。 Pandas 提供了一种创建、操作和删除数据的简单方法。
您必须使用命令 pip install pandas
安装 pandas 库。在 Windows 中,您将在命令提示符中执行此命令,而在 Linux 中,您将在终端中执行此命令。
将 CSV 读入 pandas DataFrame 非常简单:
#import necessary modules import pandas result = pandas.read_csv('X:\data.csv') print(result)
读取 CSV Pandas 示例的结果:
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
非常有用的图书馆。只需三行代码即可获得与之前相同的结果。 Pandas 知道 CSV 的第一行包含列名,它会自动使用它们。
使用 Pandas 编写 CSV 文件
使用 Pandas 写入 CSV 文件就像阅读一样简单。在这里你可以说服它。首先,您必须根据以下 Python 写入 CSV 代码创建 DataFrame。
from pandas import DataFrame C = {'Programming language': ['Python','Java', 'C++'], 'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'], 'Appeared': ['1991', '1995', '1985'], 'Extension': ['.py', '.java', '.cpp'], } df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension']) export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored print (df)
这是输出
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
并在指定位置创建 CSV 文件。
结论
所以,现在您知道如何使用“csv”方法以及如何以 CSV 格式读取和写入数据了。 CSV文件由于易于阅读和管理,而且体积小,处理和传输速度相对较快,在软件应用中得到广泛应用。
csv 模块提供了各种函数和类,使您可以轻松地读写。您可以查看官方 Python 文档并找到一些更有趣的技巧和模块。 CSV 是保存、查看和发送数据的最佳方式。实际上,学习并不像一开始看起来那么难。但只要稍加练习,你就会掌握它。
Pandas 是读取 CSV 文件的绝佳选择。
此外,还有其他方法可以使用 ANTLR、PLY 和 PlyPlus 等库来解析文本文件。它们都可以处理繁重的解析,如果简单的字符串操作不起作用,你可以使用正则表达式。
Python