从CSV文件中导入数据(csv是指逗号分隔的值)
1、操作步骤
2、工作原理
3、代码实现
4、规则
1、操作步骤
(1)打开lagou.csv文件
(2)首先读取文件头
(3)然后读取剩余行
(4)当发生错误时抛出异常
2、工作原理
(1)首先,导入csv模块便能访问所需要的方法。然后,用with语句打开数据文件并把它绑定到对象f。不必操心在操作完资源后去关闭数据文件,with语句的上下文管理器会帮助处理。这在操作资源型文件时非常方便,因为它能确保在代码块执行完毕后资源会被释放掉(比如关闭文件)
(2)然后用 csv.reader() 方法返回reader 对象,通过该对象遍历所读取文件的所有行。在这里,每行内容是一个值列表,在循环中被打印出来
(3)文件的第一行是文件头,用来描述文件中每列的数据,在读取时多少有些不同。文件头并不是必需的,有些CSV文件就不带文件头,但它们确实是提供数据集合的最小元数据信息的一个方式。有用分隔的文本或者仅用作元数据的CSV文件,来描述数据格式和附加数据的情况。
此时只能打
开文件来看第一行是数据头还是数据。
(4)在遍历数据时,我们把第一行存储为文件头,把其他行添加到数据列表中。
读取文件时一旦出错,csv.reader() 方法会生成错误信息。可以捕获这些错误信息并打印出有用信息。
3、代码实现
import csv
import sys
filename = 'lagou.csv'
data = []
try:
with open(filename,encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader)
data = [row for row in reader]
except csv.Error as e:
print("Error reading CSV file at line %s:%s" % (reader.line_num, e))
sys.exit(-1)
if header:
print(header)
print("===============")
for datarow in data:
print(datarow)
注:数据见
4、规则
- 开头是不留空,以行为单位。
- 可含或不含列名,含列名则居文件第一行。
- 一行数据不跨行,无空行。
- 以半角逗号(即,)作分隔符,列为空也要表达其存在。
- 列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。
- 文件读写时引号,逗号操作规则互逆。
- 内码格式不限,可为 ASCII、Unicode 或者其他。
- 不支持数字
- 不支持特殊字符