Python处理数据,并经其存储为文本数据(Txt、JSON、CSV、Excel)总结

处理文本数据(Txt、JSON、CSV、Excel)

Txt文件存储

将数据保存为txt文件格式是最为简单的。

with open('test.txt','w',encoding='utf-8') as file: 
	data = '保存文件'   
    file.write(data+‘\n’)  #写入文件 可以添加写入的'\n'.join([字段])
    
    file.close()  # 关闭

JSON文件存储

可以调用 JSON loads()方法将JSON文本字符串转为JSON对象,可以通过 dumps()方法将 JSON 对象转为文本字符串,

import json

with open ('data.json','w',encoding='utf-8') as file:

    #如果想保存为JSON格式的,可以在加一个参数indent=2即可。

    file.write(json.dumps(data,indent=2))
    file.close()  # 关闭

如果出现不显示中文字符,还需要指定参数ensure_asci=False,json.dumps(data,indent=2,ensure_ascii=False)

CSV文件存储

CSV(Comma-Separated Values),中文可成为逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。Python标准库自带CSV模块,不用自行安装,直接导入即可。

import csv

with open('csv_test.csv','w',newline = '') as csvfile:

    #将文件加载到CSV对象中

    write = csv.writer(csvfile)

    #写入一行表头数据

    write.writerow(['姓名','年龄','电话'])

    #多行数据写入

    data = {('zhangsan','15','1385210234'),('wangsi','25','13812350360')}

    #关闭CSV对象

    write.writerows(data)

使用pandas读取的话,很方便

import pandas as pd

df = pd.read_csv('csv_test.csv',encoding ='gb2312')

print(df)

值得注意的是这里可能会出现乱码,需要指定字符编码,csv文件的编码为gb2312或utf-8时,指定编码格式pd.read_csv(name, encoding=‘gb2312’)可解决乱码问题;如果编码格式为utf-8,则另存为txt文件,pd.read_table(name) 不用指定编码格式,也可以解决乱码问题。

Excel文件存储

python操作Excel时,对应的有不同的版本支持库,若Excel为2003时,需选择pyExcelerator;若Excel为2007时,需选择openpyxl;而xlrd库支持所有版本的数据读取,xlwt库支持所有版本的数据写入。

所以,考虑到兼容性一般都选择使用 xlrd和xlwt,Windows环境CMD下直接使用pip安装即可。

pip3 install xlrd

pip3 install xlwt

将数据写入到Excel是比较复杂的,有格式以及公式、插入图片等的功能,下面直接看写入Excel的语法。

import xlwt

#新建一个Excel文件

wb = xlwt.Workbook()

#在新建的文件中新建一个名为Python的工作簿

ws = wb.add_sheet(‘Python’,cell_overwrite_ok=True)

#定义字体对齐方式对象

alignment = xlwt.Alignment()

#设置水平方向

#HORZ_GENERAL,HORZ_LEFT,HORZ_CENTER,HORZ_RIGHT,HORZ_FILLED

#HORZ_JUSTIFIED,HORZ_CENTER_ACROSS_SEL,HORZ_DISTRIBUTED

alignment.horz = xlwt.Alignment.HORZ_CENTER

#设置垂直方向

#VERT_TOP,VERT_CENTER,VERT_BOTTOM,VERT_JUSTIFIED,VERT_DISTRIBUTED

alignment.vert = xlwt.Alignment.VERT_CENTER

#定义格式对象

style = xlwt.XFStyle()

style.alignment = alignment

#合并单元格write_merge(开始行,结束行,开始列,结束列,内容,格式)

ws.write_merge(0,0,0,5,'Python数据存储',style)

#写入数据we.write(行,列,内容)

for i in range(2,7):

    for k in range(5):

        ws.write(i,k,i+k)

        #Excel公式xlwt.Formula

        ws.write(i,5,xlwt.Formula('SUM(A'+srt(i+1)+ ':E'+str(i+1)+')'))

#wb.save('file.xls')

#插入bmp格式图片,insert_bitmap(img,x,y,x1,y1,scale_x=0.8,scale_y=1)

#x表示行数,y表示列数,x1表示相对原来位置向下偏移的像素,y1表示相对原来位置像右偏移的像素,scale_x、scale_y表示缩放比例

ws.insert_bitmap('G:\\img.bmp',9,1,2,2,scale_x=0.3,scale_y=0.3)

#保存文件

wb.save('file.xls')

读取数据需要第三方库 xlrd 来实现,具体代码如下。

import xlrd

wb = xlrd.open_workbook('file.xls')

#获取工作簿的zongshu

ws_count = wb.nsheets

print('Sheets总数:',ws_count)

#通过索引顺序获取Sheets

#ws = wb.sheets() [0]

#ws = wb.sheet_by_index(0)

#通过Sheets名获取Sheets

ws = wb.sheet_by_name('Python')

#获取整行的值,以列表形式返回

row_value = ws.row_values(3)

print('第四行数据为:',row_value)

#获取整列的值,以列表形式返回

row_col = ws.col_values(3)

print('D列的数据为:',row_col)

#获取所有的lie

nrows = ws.nrows

ncols = ws.ncols

print('总行数为:',nrows,'总列数为:',ncols)

#获取某个单元格内容cell(行,列)

cell_F3 = ws.cell(2,5).value

print('F3单元格内容为:',cell_F3)

#使用行列索引获取某个单元格的内容

row_F3 = ws.row(2)[5].value

col_F3 = ws.col(5)[2].value

print('F3单元格的内容为:',row_F3, '\n'  'F3单元格的内容为:',col_F3)
符号描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

参考:
https://cloud.tencent.com/developer/article/1487500

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值