[Python]读写CSV文件


CSV是一种通用的、相对简单的文件格式,被广泛应用。

CSV文件

CSV文件(Comma-Separated Values,也称为字符分隔值),是以纯文本形式存储表格数据(数字和文本)的文件;由任意条记录组成:

  • 记录间以换行符分隔;
  • 每条记录由多个字段组成,字段由分隔符(最常见的是逗号制表符)分割;
  • 字段包含特殊字符(逗号,换行符,或双引号),必须以双引号括住;

通常,所有记录都有完全相同的字段序列。

csv库读写

通过csv库读写时,需要先导入库import csv

写文件

通过open打开文件,然后与csv.writer关联即可:

  • 设定换行符为空newline=""):否则会出现空行;
  • 要保证每条记录及时写入文件,需要通过flush刷新缓冲区;
  • 通过writerow,把一个列表作为一条记录写入;

每条都刷新的示例:

with open(os.path.join(storePath, "result.csv"), 'w', encoding='utf-8', newline="") as f:
    writer = csv.writer(f)

    def csvWrite(name, result, count, notes=""):
        writer.writerow([name, count, notes])
        f.flush()

    csvWrite("名称", "数量", "说明")
	csvWrite("paper", 10, "how many")

读文件

通过csv.reader()返回一个reader对象,即可对这个对象进行遍历,输出每一行,某一行,或某一列

遍历方式

依次遍历每一行与每一列,来获取内容:

with open('result.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for rec in reader:
        print(rec)
        for field in rec:
            print("\t" + field)

遍历到的每一行rec为一个list,而每个字段field为str。

list方式

可把返回的reader直接转换为list,通过操作list来获取文件内容:

with open('result.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    result = list(reader)
    print(result)

numpy读取

通过numpy也可读取csv文件:

  • delimiter设定字段的分隔符;
  • skiprows设定跳过开始多少行;
  • usecols设定读取哪些列;
import numpy as np
data = np.loadtxt(open("result.csv","rb"),delimiter=",",skiprows=n,usecols=[2,3]) 

panda读写

通过panda(pip install pandas)也可方便地读写csv文件:

import pandas as pd
df=pd.read_csv('result.csv',header=None,sep=',') 

创建DataFrame后,可通过to_csv()来写文件:

import pandas as pd

city = pd.DataFrame([['Sacramento', 'California'], ['Miami', 'Florida']], columns=['City', 'State'])
city.to_csv('city.csv')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值