Python对CSV、Excel、txt、dat文件的处理


Posted in Python onSeptember 18, 2018

python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容)

1、读取

1.1基于python csv库

#3.读取csv至字典x,y
import csv
# 读取csv至字典
csvFile = open(r'G:\训练小样本.csv', "r")
reader = csv.reader(csvFile)
#print(reader)
# 建立空字典
result = {}
i=0
for item in reader:
 if reader.line_num==1:
 continue
 result[i]=item
 i=i+1
# 建立空字典 
j=0
xx={}
yy={}
for i in list(range(29)):
 xx[j]=result[i][1:-1]
 yy[j]=result[i][-1]
 # print(x[j])
 # print(y[j])
 j=j+1
csvFile.close()
##3.1字典转换成list
X=[]
Y=[]
for i in xx.values():
 X.append(i)
for j in xx.values():
 X.append(j)

改进的CSV读取,直接从CSV文件读取到 list:

#加载数据 
def loadCSV(filename): 
 dataSet=[] 
 with open(filename,'r') as file: 
 csvReader=csv.reader(file) 
 for line in csvReader: 
 dataSet.append(line) 
 return dataSet

读取的方式,是一行一行读取。

1.2 pandas读取

import pandas as pd
test_df = pd.read_excel(r'G:\test_linearRegression.xlsx')

2、写入

import csv
#程序三
with open(r'G:\0pythonstudy\chengxu\test.csv','w',newline='') as myFile: 
 myWriter=csv.writer(myFile) 
 myWriter.writerow([7,'g']) 
 myWriter.writerow([8,'h']) 
 myList=[[1,2,3],[4,5,6]] 
 myWriter.writerows(myList) 
# myFile.close()
with open(r'G:\0pythonstudy\chengxu\test.csv',"r") as data:
 result=csv.reader(data)
 for item in result:
 print(item)

写入,如果纯用 open(r'G:\0pythonstudy\chengxu\test.csv','w'),就会出现多出一空行。

二、Excel文件处理

1、读取
方法一:

使用Python的 xlrd包。

#1、导入模块
import xlrd
#2、打开Excel文件读取数据
data = xlrd.open_workbook('test_data.xlsx')
# print('data',data)
#3、使用技巧
#获取一个工作表
table = data.sheets()[0] #通过索引顺序获取
# print('table',table)
print(table.nrows)#table 行数
print(table.ncols)
table = data.sheet_by_index(0) #通过索引顺序获取
# print('table',table)
table = data.sheet_by_name(u'Sheet1')#通过名称获取
# 获取整行和整列的值(数组)
i=1
print(table.row_values(i))#获得第i行数据
print(table.col_values(i))#获得第i列数据

运行结果:

9
2
[2.0, 6.0]
[5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0]

方法二:

或者,可以把Excel文件转换成csv格式文件,直接修改后缀名,好像会出错,还是建议另存为修改成csv文件。

方法三:
使用pandas包

import pandas as pd
test_df = pd.read_excel(r'G:\test.xlsx')

pandas 读取为dataframe格式,其中dataframe.values是nparray格式,nparray.tolist()是python list 格式。

注意:pandas和 xlrd的区别在于,pandas会把第一行和第一列作为索引的表头;xlrd则会把所有的数据都读取,没有索引表头一说。

三、dat文件处理

把.dat文件修改成.txt格式文件。
这里可以参考 python批量更改文件后缀名 一文。

四、txt文件处理

a = numpy.loadtxt('odom.txt')

a [[ 2.49870000e-01
 2.50250000e-01
 [ 3.64260000e+03
 3.72430000e+03
 [ 4.53960000e+03
 4.50590000e+03
 ...,
 [ 4.74110000e+01
 4.89660000e+01
 [ 4.10930000e+01
 4.20480000e+01
 [ 1.83510000e+01
 1.68250000e+01
a.shape (52, 500)
fp = open('test.txt','r')
lines = fp.readlines()
fp.close()
for line in lines:
 username = line.split(',')[0]
 password = line.split(',')[1]

注:第一句是以只读方式打开文本文件;第二个是读取所有行的数据(read:读取整个文件;readline:读取一行数据);最后一定要关闭文件。最终会返回一个列表,通过for循环可以一个个的读取其中的数据。如username,password。这时候通过split方法进行分割,最终可以得到username    password,这样就可以在自动化里面做参数化了。

python读取CSV文件

import csv
date =csv.reader(open('test.csv','r'))
for test in date:
 print test
 print test[0]

注:需要先导入csv包,然后通过reader方法读取内容,最终会返回一个列表。想选择某一列数据,只需要制定列表下标即可

python读取excel

需要先安装xlrd模块

账号 密码 备注
import xlrd
book=xlrd.open_workbook(data_dirs()+'/system.xlsx')
sheet=book.sheet_by_index(0)
print sheet.cell_value(0,2)

注:(0,2)表示第二行第三列的数据,也就是:备注

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
使用Python脚本操作MongoDB的教程
Apr 16 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python中的随机函数random的用法示例
Jan 27 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python依赖包整体迁移方法详解
Aug 15 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 Python
python 3.6.4 安装配置方法图文教程
Sep 18 #Python
python 3.6.5 安装配置方法图文教程
Sep 18 #Python
python的pip安装以及使用教程
Sep 18 #Python
windows下python安装小白入门教程
Sep 18 #Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 #Python
浅述python中深浅拷贝原理
Sep 18 #Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 #Python
You might like
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
php中使用GD库做验证码
2016/03/31 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
js文字滚动停顿效果代码
2008/06/28 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
Django如何批量创建Model
2020/09/01 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
用Python实现职工信息管理系统
2020/12/30 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
护士长竞聘演讲稿
2014/04/30 职场文书
张丽莉观后感
2015/06/16 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
学校隐患排查制度
2015/08/05 职场文书
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python