Python处理csv文件(一)

CSV(Comma-Separated Values)即逗号分隔值,是纯文本,任何编辑器都可打开,在CSV文件中:

  • 值没有类型,所有值都是字符串
  • 不能指定字体颜色等样式
  • 不能指定单元格的宽高,不能合并单元格
  • 没有多个工作表
  • 不能嵌入图像图表

在CSV文件中,以,作为分隔符,分隔两个单元格。像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。

不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。

filename = r'C:\Users\ljy\Desktop\paper2\data\train.csv'
with open(filename) as f:
    reader = csv.reader(f)
    head_row = next(reader)
    for row in reader:
        # 行号从2开始
        print(reader.line_num, row)

写数据到csv文件中

有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。

import csv

# 使用数字和字符串的数字都可以
datas = [['name', 'age'], ['Bob', 14], ['Tom', 23], ['Jerry', '18']] with open('example.csv', 'w', newline='') as f: writer = csv.writer(f) for row in datas: writer.writerow(row) # 还可以写入多行 writer.writerows(datas)

如果不指定newline='',则每写入一行将有一空行被写入。上面的代码生成如下内容。

name,age
Bob,14
Tom,23
Jerry,18
name,age Bob,14 Tom,23 Jerry,18

DictReader和DictWriter对象

使用DictReader可以像操作字典那样获取数据,把表的第一行(一般是标头)作为key。可访问每一行中那个某个key对应的数据。

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv' with open(filename) as f: reader = csv.DictReader(f) for row in reader: # Max TemperatureF是表第一行的某个数据,作为key max_temp = row['Max TemperatureF'] print(max_temp)

使用DictWriter类,可以写入字典形式的数据,同样键也是标头(表格第一行)。

import csv

headers = ['name', 'age'] datas = [{'name':'Bob', 'age':23}, {'name':'Jerry', 'age':44}, {'name':'Tom', 'age':15} ] with open('example.csv', 'w', newline='') as f: # 标头在这里传入,作为第一行数据 writer = csv.DictWriter(f, headers) writer.writeheader() for row in datas: writer.writerow(row) # 还可以写入多行 writer.writerows(datas)

猜你喜欢

转载自blog.csdn.net/ch1209498273/article/details/80462064