从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、规则

  1. 开头是不留空,以行为单位。
  2. 可含或不含列名,含列名则居文件第一行。
  3. 一行数据不跨行,无空行。
  4. 以半角逗号(即,)作分隔符,列为空也要表达其存在。
  5. 列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。
  6. 文件读写时引号,逗号操作规则互逆。
  7. 内码格式不限,可为 ASCII、Unicode 或者其他。
  8. 不支持数字
  9. 不支持特殊字符