7.2 CSV 文件
CSV 是 Comma-Separated Values 的缩写,意思是“逗号分隔值”。它用纯文本(plain text)记录表格数据,每一行是一条记录,每一列是一个字段(field),字段之间通常用逗号分隔。
CSV 的结构
一个简单的 CSV 文件如下:
text
ID,First Name,Last Name
9012,Rachel,Booker
2070,Laura,Grey
4081,Craig,Johnson第一行通常是表头(header),说明每一列的含义。后面的每一行是数据记录。
正在加载概念检查...
csv 模块
Python 的 csv 模块可以帮助我们读取和写入 CSV 文件,避免手动处理很多格式细节。
正在加载交互实验...
下面的程序读取用户信息,并生成邮箱地址。本例假设学校已经有一个 user_info.csv,每一行保存一个用户的 ID、名和姓:
text
ID,First Name,Last Name
9012,Rachel,Booker
2070,Laura,Grey
4081,Craig,Johnson
9346,Mary,Jenkins
5079,Jamie,Smith邮箱生成规则是:姓氏首字母 + 名 + ID + @gmail.com,并统一转换为小写。例如 Rachel Booker 的 ID 是 9012,生成邮箱就是 [email protected]。
python
import csv
with open("user_info.csv", "r", encoding="UTF-8") as file:
reader = csv.reader(file)
next(reader)
user_info = list(reader)
with open("user_email.csv", "w", newline="", encoding="UTF-8") as file:
writer = csv.writer(file)
writer.writerow(["ID", "First Name", "Last Name", "Email"])
for user in user_info:
user_id, first_name, last_name = user
email = (last_name[0] + first_name + user_id + "@gmail.com").lower()
writer.writerow([user_id, first_name, last_name, email])reader 是一个迭代器(iterator),next(reader) 用于让它前进一行,常见用途是跳过表头。如果不跳过表头,程序会把 "ID"、"First Name"、"Last Name" 当成普通用户数据处理。
程序会生成新的 user_email.csv:
text
ID,First Name,Last Name,Email
9012,Rachel,Booker,brachel9012@gmail.com
2070,Laura,Grey,glaura2070@gmail.com
4081,Craig,Johnson,jcraig4081@gmail.com
9346,Mary,Jenkins,jmary9346@gmail.com
5079,Jamie,Smith,sjamie5079@gmail.com正在加载概念检查...
正在加载本节练习...