python 读写 json,csv,txt,docx,xlsx,xls文件大全

news2024/11/25 8:21:55

目录

  • 前言
  • 一、读写json
    • 1.1 读
    • 1.2 写
      • 1.2.1 list类型写入
      • 1.2.2 dict类型写入
  • 二、读写csv
    • 2.1 读
    • 2.2 写
      • 2.2.1 list类型写入
      • 2.2.2 dict类型写入
  • 三、读写txt
    • 3.1 读
    • 3.2 写
      • 按行写入(手动添加换行符\n)
      • 按行写入(python添加换行符\n)
      • 3.2.1 list类型写入
      • 3.2.2 dict类型写入
  • 四、读写docx
    • 4.1 读
    • 4.2 写
      • 4.2.1 list类型写入
      • 4.2.2 dict类型写入
  • 五、读写xlsx
    • 5.1 读
      • 5.1.1 读多个sheet
      • 5.1.2 读指定sheet工作表
      • 5.1.3 读指定sheet中指定行/列内容
    • 5.2 写
      • 5.2.1 list类型写入
      • 5.2.2 dict类型写入
  • 六、读写xls
    • 6.1 读
    • 6.2 写
      • 6.2.1 list类型写入
      • 6.2.2 dict类型写入
      • 6.2.3 修改原始文件内容

前言

最近再处理数据的时候,总会用到读写json,csv,xlsx和xls文件代码

这里就做个总结记录一下

一、读写json

1.1 读

## 读入json文件
### json格式:{'id':'....','instruction':'.......','input':'.....','output':'....'}
def get_json_data(path):
    json_file = open(path, 'r', encoding='utf-8')
    json_data = []
    for line in json_file.readlines():
        dic = json.loads(line)
        ## 单独提取每个字段
        id = dic['id']
        instruction = dic['instruction']
        input_all = dic['input']
        output = dic['output']
        ## 提取整个字段
        json_data.append(dic)
    return json_data  

扩展: json.loads(line)和 json.load(line)

1.2 写

通用写法:

## 写入json文件
with open(path, 'a+', encoding='utf-8') as file:
    json.dump(dic, file, ensure_ascii=False)	# dic是准备写入的dict类型
    file.write('\n')

1.2.1 list类型写入

import json

my_list = [1, 2, 3, "four", "five"]

# 将list写入JSON文件
with open("my_list.json", "w") as f:
    json.dump(my_list, f)

# 如果想再把json文件读出
with open("my_list.json", "r") as f:
    my_list = json.load(f)

print(my_list)  # [1, 2, 3, 'four', 'five']'

在这里插入图片描述

1.2.2 dict类型写入

import json

my_dict = {"name": "Alice", "age": 25, "city": "New York"}

# 将dict写入JSON文件
with open("my_dict.json", "w") as f:
    json.dump(my_dict, f)

在这里插入图片描述
注意:json.dump()将Python对象序列化为JSON格式,并将其写入文件中。

扩展:json.dumps()和 json.dump()

二、读写csv

2.1 读

import csv

# 读取CSV文件
with open('input_file.csv', 'r') as input_file:
    reader = csv.reader(input_file)
    for row in reader:
        print(row)

2.2 写

2.2.1 list类型写入

import csv

# 写入CSV文件
with open('output_file.csv', 'w', newline='') as output_file:
    writer = csv.writer(output_file)
    writer.writerow(['Name', 'Age', 'Gender'])
    writer.writerow(['John', '30', 'Male'])
    writer.writerow(['Jane', '25', 'Female'])

2.2.2 dict类型写入

import csv

data = [
    {'Name': 'John', 'Age': '30', 'Gender': 'Male'},
    {'Name': 'Jane', 'Age': '25', 'Gender': 'Female'},
    {'Name': 'David', 'Age': '40', 'Gender': 'Male'}
]

# 写入CSV文件
with open('output_file.csv', 'w', newline='') as output_file:
    fieldnames = ['Name', 'Age', 'Gender']
    writer = csv.DictWriter(output_file, fieldnames=fieldnames)
    writer.writeheader()
    for row in data:
        writer.writerow(row)

在这里插入图片描述

注意: 一般csv文件中只包含一个sheet工作表,所以这里就不举例含有多个sheet工作表的csv文件

三、读写txt

3.1 读

# 一、按行读取文本文件
with open('input.txt', 'r') as f:
    # 使用 readline() 方法读取一行数据
    line = f.readline()
    while line:
        print(line.strip())  # 去除行末的换行符
        line = f.readline()


# 二、使用 readlines() 方法读取所有行数据
with open('input.txt', 'r') as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())  # 去除行末的换行符

3.2 写

按行写入(手动添加换行符\n)


with open('output.txt', 'w') as f:
    # 使用 write() 方法写入一行数据
    f.write('Hello, world!\n')

    # 使用 writelines() 方法写入多行数据
    lines = ['This is line 1.\n', 'This is line 2.\n', 'This is line 3.\n']
    f.writelines(lines)

在这里插入图片描述

按行写入(python添加换行符\n)

python添加换行符的目的是防止使用不同平台(Windows/Mac/Linux),换行符编码不一致出现显示问题

import os

with open('output.txt', 'w') as f:
    # 向文件写入多行数据,并在每行数据末尾添加换行符
    lines = ['This is line 1.', 'This is line 2.', 'This is line 3.']
    f.write(os.linesep.join(lines))

在这里插入图片描述

3.2.1 list类型写入

将列表中的每个字符串写入文件中,每个字符串占用一行。

# 将 List 类型的数据写入文本文件
data = ['apple', 'banana', 'orange', 'grape']
with open('output.txt', 'w') as f:
    f.writelines([f'{item}\n' for item in data])

在这里插入图片描述

3.2.2 dict类型写入

# 将 Dict 类型的数据写入文本文件
data = {'name': 'Alice', 'age': 25, 'gender': 'female'}
with open('output.txt', 'w') as f:
    f.writelines([f'{key}: {value}\n' for key, value in data.items()])

在这里插入图片描述

四、读写docx

注意:doc是Microsoft Word 97-2003文档文件格式。docx是Microsoft Word 2007及更高版本使用的文档文件格式。这里都使用的是docx后缀名,适不适用doc文件没有测试。

4.1 读

首先读取docx文件需要安装docx库:pip install python-docx 或者conda install -c conda-forge python-docx

docx文件中有以下内容:
在这里插入图片描述

import docx

# 打开DOCX文件
doc = docx.Document('my_doc.docx')

# 读取DOCX文件内容
for para in doc.paragraphs:
    print(para.text)

在这里插入图片描述

4.2 写

4.2.1 list类型写入

import docx

my_list = ['apple', 'banana', 'orange']

# 创建一个新的DOC对象
doc = docx.Document()

# 将list写入DOCX文件中
for item in my_list:
    doc.add_paragraph(item)

# 保存DOCX文件
doc.save('my_list.docx')

在这里插入图片描述

4.2.2 dict类型写入

import docx

my_dict = {'apple': 1.0, 'banana': 2.0, 'orange': 3.0}

# 创建一个新的DOC对象
doc = docx.Document()

# 将dict写入DOCX文件中
for key, value in my_dict.items():
    doc.add_paragraph(f'{key}: {value}')

# 保存DOCX文件
doc.save('my_dict.docx')

在这里插入图片描述

五、读写xlsx

5.1 读

5.1.1 读多个sheet

这里以my_file.xlsx为例,文件中有三个sheet工作表,每个工作表中都有三行两列内容。对内容进行读取,5.1节代码都是沿用my_file.xlsx格式内容
在这里插入图片描述

import openpyxl

# 打开XLSX文件
workbook = openpyxl.load_workbook('my_file.xlsx')

# 遍历所有工作表
for worksheet in workbook.worksheets:
    print(f'工作表名称:{worksheet.title}')

    # 读取工作表内容
    for row in worksheet.iter_rows(values_only=True):
        for cell in row:
            print(cell)

在这里插入图片描述

5.1.2 读指定sheet工作表

如果仅读取指定sheet工作表及特定某列的内容,可以考虑以下代码

import openpyxl

# 打开XLSX文件
workbook = openpyxl.load_workbook('my_file.xlsx')

# 选择特定工作表
worksheet = workbook['Sheet2']

# 读取特定单元格
cell_value = worksheet['A2'].value
print(cell_value)

即读取sheet2工作表的第A列2行内容
在这里插入图片描述

5.1.3 读指定sheet中指定行/列内容

import openpyxl

# 打开XLSX文件
workbook = openpyxl.load_workbook('my_file.xlsx')

# 指定工作表
worksheet = workbook['Sheet2']


# 读取第1、2行的内容
row_values = []
for row in worksheet.iter_rows(min_row=1, max_row=2):   # 第一行和第二行内容
    for cell in row:
        row_values.append(cell.value)
print(row_values)

# 读取第1列的内容
col_values = []
for col in worksheet.iter_cols(min_col=1, max_col=1):   # 第一列内容
    for cell in col:
        col_values.append(cell.value)
print(col_values)

在这里插入图片描述

5.2 写

5.2.1 list类型写入

多sheet工作表写入代码

import openpyxl
from openpyxl import Workbook

# 创建工作簿对象
wb = Workbook()

# 创建第一个工作表并写入数据
ws1 = wb.active		# 选择默认的工作簿
ws1.title = "List 1"
my_list1 = ['apple', 'banana', 'cherry']
for i in range(len(my_list1)):
    ws1.cell(row=i+1, column=1, value=my_list1[i])

# 创建第二个工作表并写入数据
ws2 = wb.create_sheet("List 2")
my_list2 = ['date', 'elderberry', 'fig']
for i in range(len(my_list2)):
    ws2.cell(row=i+1, column=1, value=my_list2[i])

# 保存工作簿为Excel文件
wb.save('my_lists.xlsx')

在这里插入图片描述

在这里插入图片描述

5.2.2 dict类型写入

给出json中包含dict类型的两条测试案例:

{"id": "35b868ba72d72db8d4e11ca71e679f26", "instruction": "ac不知深是谁?", "input": "ac", "output": "ac不知深是一名程序员", "title": "可以不写"}
{"id": "35b868ba72d72db8d4e11ca71e679f27", "instruction": "蜡笔小新真好看", "input": "蜡笔小新真可爱", "output": "我也同意这个观点", "title": "可以不写"}

想测试的代码可以直接把上面两条复制,然后保存到my_file.json

import json
import openpyxl
from tqdm import tqdm
data = []
# 读取json文件中dict类型的信息
with open('my_file.json', 'r',encoding='utf-8') as f:
    for line in tqdm(f.readlines()):
        dic = json.loads(line)
        data.append(dic)
        
# 创建新的XLSX文件
workbook = openpyxl.Workbook()

# 创建新的工作表
worksheet = workbook.active

# 写入表头
header = list(data[0].keys())
for i in range(len(header)):
    worksheet.cell(row=1, column=i+1, value=header[i])

# 写入数据
for i in range(len(data)):
    row_data = list(data[i].values())
    for j in range(len(row_data)):
        worksheet.cell(row=i+2, column=j+1, value=row_data[j])

# 保存XLSX文件
workbook.save('my_output.xlsx')

在这里插入图片描述

六、读写xls

注意:xls是Excel 97-2003二进制工作簿格式,而xlsx是Excel 2007及更高版本使用的Open XML工作簿格式。

6.1 读

import openpyxl

# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')

# 获取工作表对象
worksheet = workbook.active

# 读取单元格的值
cell = worksheet['A1']
print('cell.value:',cell.value)

# 迭代行和列,读取单元格的值
print("rows:")
for row in worksheet.iter_rows():
    for cell in row:
        print(cell.value)

在这里插入图片描述

6.2 写

6.2.1 list类型写入

import xlwt

# 创建一个新的Excel文件
workbook = xlwt.Workbook()

# 创建一个工作表对象
worksheet1 = workbook.add_sheet('My Sheet1')
worksheet2 = workbook.add_sheet('My Sheet2')

# 写入列表1的内容
my_list1 = ['apple', 'banana', 'cherry']
for i in range(len(my_list1)):
    worksheet1.write(i, 0, my_list1[i])
    
# 写入列表2的内容
my_list2 = ['cat', 'dog', 'bird']
for i in range(len(my_list2)):
    worksheet2.write(i, 0, my_list2[i])

# 保存Excel文件
workbook.save('my_list.xls')

在这里插入图片描述
在这里插入图片描述

6.2.2 dict类型写入

这一段代码可以参考5.2.2的内容部分

dict类型同上

{"id": "35b868ba72d72db8d4e11ca71e679f26", "instruction": "ac不知深是谁?", "input": "ac", "output": "ac不知深是一名程序员", "title": "可以不写"}
{"id": "35b868ba72d72db8d4e11ca71e679f27", "instruction": "蜡笔小新真好看", "input": "蜡笔小新真可爱", "output": "我也同意这个观点", "title": "可以不写"}
import json
import openpyxl
from tqdm import tqdm

data = []
# 读取json文件中dict类型的信息
with open('my_file.json', 'r', encoding='utf-8') as f:
    for line in tqdm(f.readlines()):
        dic = json.loads(line)
        data.append(dic)

# 创建新的XLSX文件
workbook = openpyxl.Workbook()

# 创建新的工作表
worksheet = workbook.active

# 写入表头
header = list(data[0].keys())
for i in range(len(header)):
    worksheet.cell(row=1, column=i + 1, value=header[i])

# 写入数据
for i in range(len(data)):
    row_data = list(data[i].values())
    for j in range(len(row_data)):
        worksheet.cell(row=i + 2, column=j + 1, value=row_data[j])

# 保存XLSX文件
# workbook.save('my_output.xlsx')	# 5.2.2的版本
workbook.save('my_output.xls')		# 把5.2.2的保存后缀改为 .xls

6.2.3 修改原始文件内容

在原始文件上进行修改

import xlrd
import xlwt

# 打开Excel文件
workbook = xlrd.open_workbook('example.xls')

# 获取第一个工作表
worksheet = workbook.sheet_by_index(0)

# 修改第一个单元格的值
worksheet.cell(0, 0).value = 'New Value'	# 这里填写新的值

# 创建一个新的Excel文件并将修改后的数据写入其中
new_workbook = xlwt.Workbook()
new_worksheet = new_workbook.add_sheet('Sheet 1')

for row_index in range(worksheet.nrows):
    for col_index in range(worksheet.ncols):
        new_worksheet.write(row_index, col_index, worksheet.cell(row_index, col_index).value)

new_workbook.save('new_example.xls')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux:Firewalld防火墙

Linux:Firewalld防火墙 一、Firewanlld防火墙概述二、Firewalld和Iptables的关系三、Firewalld网络区域3.1 Firewalld 区域的概念:3.2 firewalld防火墙预定义了9个区域3.3 firewalld数据处理流程 四、Firewalld防火墙的配置方法五、Firewalld-config图形…

RHCSA 8考题超级详细解析(2022最新版)本人已过

文章目录 1.配置IP地址2、配置软件仓库3、调试SELinux4、创建用户账户5. 配置cron计划任务6、创建共享目录7、配置NTP时间客户端8. auto自动挂载9、配置文件权限10、配置用户账户11、查找文件12、查找字符串13、 创建归档14、配置sudo提权15、设置密码默认策略16、配置umask值1…

海格里斯HEGERLS库架合一|仓储托盘四向穿梭车在冷库冷链行业中的应用

当前的物流行业正在从劳动密集型向技术密集型转变,物流系统越来越明显的向呈现出自动化、数字化、柔性化、智能化的发展趋势。以堆垛机为代表的自动化仓储系统,取货对场地要求比较高,多建在12M以上的新仓库。而对于不规则的、层高较低的老仓库…

【python资料】热图和Matplotlib.imshow()函数

一、说明 Matplotlib是一个强大的Python数据可视化库,可以绘制各种类型的图形,其中包括热图。热图通常用于表现数据的分布和趋势。本文用一个简单的例子,告诉大家用Matplotlib绘制热图的基本操作语句。 二、热图的概念 2.1 基本概念 热图&am…

7EBG-10-C-B-107EBG-20-B-B-10比例先导溢流阀放大板

7EBG-10-B-B-10、7EBG-20-C-B-10、7EBG-30-H-B-10、7EBG-10-C-B-10、7EBG-20-B-B-10、7EBG-30-C-B-10特性: ● 该阀是由高性能型比例先导式溢流阀和低噪音型溢流阀组合而成,进行压力与输入电流成比例的压力控制,能够达到无段式控制特性。 ●…

c++(内存管理)

本节目标: 1、c/c内存分布 2、c语言中动态内存管理方式 3、c中动态内存管理 4、operator new 与 operator delete函数 5、new和delete的实现原理 6、定位new表达式(placement - new) 7、常见面试题 目录 1.c/c内存分布 2、c语言中动…

StringRedisTemplate和RedisTemplate的区别

StringRedisTemplate和RedisTemplate的区别 springboot提供了两种redis访问工具类StringRedisTemplate和RedisTemplate,为什么spring官方会提供两种不同redis访问工具呢?两者主要的的区别在于redis的key和value的序列化方式不同,并且StringR…

手把手教你制作AI孙燕姿,让你的抖音视频火遍全网!

最近“AI孙燕姿”翻唱”的《发如雪》《爱在西元前》等歌曲在B站、抖音、快手等短视频平台爆火,截止到发稿前抖音的播放量已经超1700万。 目前AI孙燕姿制作教程资料较少,网上搜到几个都是使用开源项目Sovits来训练模型,使用门槛较高。 本文以…

云时通 X 九毛九 | SRM系统助力连锁餐饮行业高效管理供应链

餐饮行业作为第三产业中的传统服务性行业之一,始终保持旺盛的发展势头,随着时代的进步,现代餐饮企业更多以连锁业态发展,其特点是多种形式相结合而生,将新颖的就餐空间与潮流文化和传统的经典美味互相融合,…

​数据库原理及应用上机(实验五 SQL的数据更新)

✨作者:命运之光 ✨专栏:数据库原理及应用上机实验 🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善🍓🍓 ✨一、实验目的和要求 掌握SQL数据插入、修改和删除语句的一…

多大一口气能将汽车吹上天,你算出来了吗?

多大一口气能将汽车吹上天,你算出来了吗?起来了解其中的原理,手把手教你如何计算汽车起飞所需的风速! 空气同时通过机翼上表面和下表面时,会在机翼上下方形成不同流速,空气通过机翼上表面时流速大,压强较小;通过下表面…

设计模式之【中介者模式】,多对多关系降级为一对多关系的利器

文章目录 一、什么是中介者模式1、中介者模式的优势2、中介者模式的缺点3、中介者模式的应用场景4、中介者模式的四大角色5、观察者模式和中介模式的区别 二、实例1、中介者模式的一般写法2、租房中介案例3、智能家具案例 三、源码中的中介者模式1、Timer 一、什么是中介者模式…

Spring MVC 中的视图解析器是什么?如何配置它

当我们使用 Spring MVC 框架进行 Web 开发时,视图解析器(View Resolver)是一个非常重要的组件,它负责将控制器(Controller)所产生的逻辑视图名称(Logical View Name)转换成实际的视图…

Go语言环境搭建(内附网P下载地址)

一、Golang语言的官网 首先我们登录Golang的官方网站:https://golang.org/ 因为Google和中国的关系,直接登录Golang的官网,需要翻墙。 当然你也可以登录Golang的国内网站:https://golang.google.cn/ 二、下载 在Mac、Windows和L…

2023贵工程团体程序设计赛--赛后总结

本次比赛共27支队伍参加,总计135人,其中一支队伍为出题组(不计入最后排名)。实际参赛130人,5人缺考(1人未加入题集)。 1.人员分布 信息工程学院:22计科2支队伍,22软件6…

Python|Pyppeteer快速定位select下拉框(10)

前言 本文是该专栏的第10篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 一般情况下,选中某个select下拉框,会出现一堆可选信息。如下图中的Country列表,点击列表会出现多个国家选择,如下图所示。 比如说,现在需要从这个Country列表中,快速选中某个国家…

2023新版Spring6全新讲解-SpringFramework介绍

SpringFramework介绍 一、官网地址阅读 https://spring.io/ 二、Spring的发展历史 三、Spring的概述 一个Java应用层程序,是由许多个类组成的,这些类之间必然存在依赖关系,当项目越来越大,依赖关系越来越复杂,需要一…

Jmeter连接不同类型数据库语法

Jmeter连接不同类型数据库语法 添加:配置原件->JDBC Connection Configuration variable name for created pool:自定义一个线程池变量名database Connection Configuration database URL: 填写数据库ip、端口、dbname等,但是不同数据库…

【UE4】从零开始制作战斗机(下:喷射尾焰随推进速度变化)

上一篇: 【UE4】从零开始制作战斗机(中:飞机操控逻辑)_Zhichao_97的博客-CSDN博客 效果 步骤 1. 新建一个Niagara发射器 选择新发射器 选择空模板 命名为“ThrusterEmitter” 2. 打开“ThrusterEmitter”,选中“发射…

真题详解(快速排序)-软件设计(八十一)

原创 真题详解(语法分析输入记号流)-软件设计(八十)https://blog.csdn.net/ke1ying/article/details/130791934 COCOMOII基于____进行估算? 答案:源代码行数 2、0~7有8个索引,0~4是5个直接索引,磁盘块数据大小1kb字节…