在 Python 中读取带有标题的 CSV
Python 是一种明确且易于理解的通用编程语言。
Python 是全球排名前五的编程语言之一,因为它具有简单的语法和许多适用于多个领域的实用程序,例如机器学习、数据科学、游戏开发、Web 开发、应用程序开发等。感谢在背后工作的 API 场景。
Python 使文件处理成为一项无缝任务。我们可以使用 Python 轻松创建文件、读取文件、追加数据或覆盖现有文件中的数据,因为它可以处理许多文件格式,例如 txt
、csv
、xlsx
、pdf
等。
此外,它有许多开源包,使文件处理更高效、更简单。
我们将在本文中学习如何使用 Python 读取 CSV 文件及其标题。为了保持一致,我们将在代码片段中使用示例文件进行说明。你可以从此处下载此 CSV 文件。前面的示例将 CSV 文件的第一行视为其标题。
在 Python 中读取带有标题的 CSV
Python 有一个 csv
包,我们可以用它来读取 CSV 文件。这个包默认存在于官方 Python 安装中。
csv
包有一个 reader()
方法,我们可以用它来读取 CSV 文件。它返回一个可迭代对象,我们可以遍历该对象以打印正在读取的 CSV 文件的内容。
from csv import reader
file_name = "email.csv"
with open(file_name, "r") as csv_file:
csv_reader = reader(csv_file)
for row in csv_reader:
print(row)
输出:
['Login email', 'Identifier', 'First name', 'Last name']
['laura@example.com', '2070', 'Laura', 'Grey']
['craig@example.com', '4081', 'Craig', 'Johnson']
['mary@example.com', '9346', 'Mary', 'Jenkins']
['jamie@example.com', '5079', 'Jamie', 'Smith']
上述解决方案的时间复杂度为 O(n)
。
正如我们所看到的,输出显示第一行是标题,其他行是值。我们可以通过将标题存储在单独的变量中并以合适的格式打印所有内容来进一步美化输出。
from csv import reader
file_name = "email.csv"
with open(file_name, "r") as csv_file:
csv_reader = reader(csv_file)
header = next(csv_reader)
print("Header:")
print(", ".join(header))
print("Values:")
for row in csv_reader:
print(", ".join(row))
输出:
Header:
Login email, Identifier, First name, Last name
Values:
laura@example.com, 2070, Laura, Grey
craig@example.com, 4081, Craig, Johnson
mary@example.com, 9346, Mary, Jenkins
jamie@example.com, 5079, Jamie, Smith
上述解决方案的时间复杂度为 O(n)
。
在上面的代码中,csv_reader
是可迭代的。使用 next()
方法,我们首先从 csv_reader
获取标题,然后使用 for
循环迭代这些值。
顾名思义,CSV 文件具有逗号分隔的值。
有时,CSV 文件中的值不是用逗号分隔的;他们可以使用分号 (;
)、冒号 (:
) 等作为分隔符。在这种情况下,可以使用 csv
包中的 reader()
方法的 delimiter
参数。
delimiter
参数接受一个字符串或一个应该被视为分隔符的字符。例如,如果 CSV 文件具有 ;
作为其分隔符,读取此类 CSV 文件的代码如下。
from csv import reader
file_name = "email.csv"
with open(file_name, "r") as csv_file:
csv_reader = reader(csv_file, delimiter=";") # Important
header = next(csv_reader)
print("Header:")
print(", ".join(header))
print("Values:")
for row in csv_reader:
print(", ".join(row))
输出:
Header:
Login email, Identifier, First name, Last name
Values:
laura@example.com, 2070, Laura, Grey
craig@example.com, 4081, Craig, Johnson
mary@example.com, 9346, Mary, Jenkins
jamie@example.com, 5079, Jamie, Smith