使用Python如何处理csv文件?

本文和大家分享的主要是使用python语言处理csv文件相关内容,一起来看看吧,希望对大家学习python开发有所帮助。

CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:

· 值没有类型,所有值都是字符串

· 不能指定字体颜色等样式

· 不能指定单元格的宽高,不能合并单元格

· 没有多个工作表

· 不能嵌入图像图表

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

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

从CSV文件中读取数据

import csv

filename = ’F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv’withopen(filename) as f:

reader = csv.reader(f)

print(list(reader))

data 不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样

[[’name’, ’age’], [’Bob’, ’14’], [’Tom’, ’23’], ...]

于是我们可以这样访问到Bob的年龄 reader[1][1] , 在for循环中遍历如下

import csv

filename = ’F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv’withopen(filename) as f:

reader = csv.reader(f)

for row in reader:

# 行号从1开始

print(reader.line_num, row)

要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用 next 方法一次获取一行。

import csv

filename = ’F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv’with open(filename) as f:

reader = csv.reader(f)

# 读取一行,下面的reader中已经没有该行了

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,18name,age

Bob,14

Tom,23

Jerry,18

DictReader和DictWriter对象

使用DictReader可以像操作字典那样操作数据,把表的第一行(一般是标头)作为key。使用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)

来源:博客园

时间: 2024-07-31 09:14:33

使用Python如何处理csv文件?的相关文章

Python操作csv文件

一.Python读取csv文件 1 说明:以Python3.x为例 2 #读取csv文件方法1 3 import csv 4 csvfile = open('csvWrite.csv',newline='')#打开一个文件 5 csvReader = csv.reader(csvfile)#返回的可迭代类型 6 print(type(csvReader)) 7 for content in csvReader: 8 print(content) 9 csvfile.close()#关闭文件运行结

Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence

Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence 解决办法: 在语句open(sFileName,newline='')中,增加encoding='UTF-8',如下: open(sFileName,newline='',encoding='UTF-8') Python读取CSV文件,报错:UnicodeDecode

python读写csv文件

python自带有csv模块,如果想了解更详细的内容,可以参考官方文档 一.读操作 不知道为什么,要是打开文件时不使用'b'模式,就会有隔行出现,所以,在windows中想要正常操作csv文件,就加上b模式.delimiter来指定reader各个域之间的分隔符. def readData(): with open('csvFile.csv','rb') as fobj: csvFileReader = csv.reader(fobj,delimiter='-'); header = next(

python 从csv文件插入mysql数据库

一个工作遇到的问题,将excel文件的内容插入到mysql数据库中. 总体思路是 excel文件-->转换成csv文件-->csv文件读取-->读取数据插入mysql数据库 用到python的两个库csv和MySQLdb 下面是具体的code: 代码中数据库部分没啥好记录的,特别记录一下csv库的用法: # Insert data from csv file.csv_file = file('3D_PTlabs.csv', 'rb')csv_reader = csv.reader(csv

python对csv文件的读写操作

python内置了csv模块,用它可以方便的操作csv文件. 1.写文件 (1)写文件的方法一 import csv # open 打开文件有多种模式,下面是常见的4种 # r:读数据,默认模式 # w:写数据,如果已有数据则会先清空 # a:向文件末尾追加数据 # x : 写数据,如果文件已存在则失败 # 第2至4种模式如果第一个参数指定的文件不存在,则会先创建一个空文件 with open('1.csv', 'w', newline='') as f: head = ['标题列1', '标题

python写入csv文件中文乱码解决方案

今天修改程序,需要写入csv文件,发现中文会乱码,后来查了下,可以设置文件写入属性后,就可以解决: import csvimport codecslist=['a101','b101']sumlist=[]for str in list: templist=[] templist.append('a') templist.append('b') templist.append('c') sumlist.append(templist)csvfile = file('csv_test.csv',

python 写csv文件

一.只有一列内容: def create_file(self, a, b): # 上传csv 文件 # os.remove('openfile.csv') open_file = open('50000file.csv', 'w+') open_file.write('商户ID'+','+'类目'+','+'描述'+','+'变更分值'+ '\n') for i in range(a, b): open_file.write(str(i)+','+'商户食品安全-重大食品安全事件'+','+'因

python 写入csv文件

import csv fieldnames = ['Column1', 'Column2', 'Column3', 'Column4'] rows = [{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}, {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}, {'Column1': '0', 'Column2': '1', 'Column3

python写入csv文件的几种方法总结

最常用的一种方法,利用pandas包 import pandas as pd #任意的多组列表 a = [1,2,3] b = [4,5,6] #字典中的key值即为csv中列名 dataframe = pd.DataFrame({'a_name':a,'b_name':b}) #将DataFrame存储为csv,index表示是否显示行名,default=True dataframe.to_csv("test.csv",index=False,sep=',') 1 2 3 4 5 6