Python对csv文件一键多值保存为json本地文件再读取加速效率(3)

news/2024/7/21 4:17:49 标签: python, json, excel

最近发现做办公自动化表格匹配的时候还是csv格式的文件最快、效率是最高的

今天接到一个需求就是大致内容之这样的

1、给我一张表格直邮一列A列,内容是运单号

2、需要用相同的单号去另外一张表格匹配数据

3、其实就是Excel中的常见的vlookup

但是想要匹配的表格有几十个,所以这样你还觉得用vlookup方便么

在这里插入图片描述

解决方案

1、将想要匹配的表格(Excel转换成CSV),如果你的表格本身就是csv可以跳过此步骤

文件夹【数据源】,作用:存放你想要转换csv的表格——请提前创建好

文件夹【数据源(csv)】,作用:存放你转换好之后的csv文件——请提前创建好

代码

python">import os,time
import pandas as pd  # 导入pands库
def xlsx2csv_mh():
    # 读取xlsx数据
    for f in os.listdir("./数据源/"):
        t1 = time.time()
        data = pd.read_excel("./数据源/" + f, index_col=0)  # 设置index_col=0,写入文件时第一列不会存在序列号
        data.to_csv("./数据源(csv)/" + f + '.csv', encoding='utf-8')  # 将数据写入csv文件
        print(f"{f}转换完成......")
        t2 = time.time()
        print(t2 - t1)

xlsx2csv_mh()

json_30">2、 做匹配项,保存为json文件

我做的匹配项可一键多值,就是如:A列作为建:[B列+C列+D列。。。],以这样的形式

如图,我就想以C列为键,G列、I列、J列为值

在这里插入图片描述

读取上一步转换好csv的文件夹

list_a.append((row[2],row[6]+"="+row[8]+"="+row[9])),这行就是我做的列表,row[2]就是键,row[6]+“=”+row[8]+“=”+row[9],这个就是值,中间我用=等于号隔开了

jsonjson_39">文件夹【json文件】,作用:存放做好的json文件——请提前创建好

代码(接上一步):

python">import json
import os
from collections import defaultdict
import csv

for f in os.listdir('./数据源(csv)/')[:1]:
    list_a = []
    d = defaultdict(list)
    with open('./数据源(csv)/'+ f, newline='', encoding='utf-8') as csvfile:
        # 读取 CSV 文件内容
        reader = csv.reader(csvfile, delimiter=',', quotechar='"')
        # 遍历 CSV 文件中的每一行数据
        for row in reader:
            # 处理每一行数据
            # print(row)
            list_a.append((row[2],row[6]+"="+row[8]+"="+row[9]))
    for key, value in list_a:
        d[key].append(value)  # 省去了if判断语句
    with open(f"./json文件/{f}.json","w",encoding="utf-8") as f_w:
        f_w.write(json.dumps(d,ensure_ascii=False))
    print(f"{f},转换json成功")

json_67">查看做好的json文件

在这里插入图片描述

json_69">读取json,进行测试

代码

python">with open("./json文件/10月.xlsx.csv.json","r",encoding="utf-8")as f:
    res = json.load(f)

print(res['SF16xxxxxxx'])

成功!!

在这里插入图片描述

好了,分享结束,希望能够帮助到你

更多关于办公自动化的知识,请关注我吧

更多关乎Excel操作请关注我的专栏吧

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


http://www.niftyadmin.cn/n/467788.html

相关文章

【Linux后端服务器开发】C程序预处理

目录 一、源文件到可执行程序的过程 二、预定义符号 三、#define宏定义 四、条件编译 一、源文件到可执行程序的过程 预处理:去注释,宏替换,头文件展开,条件编译编译:c语言 ---> 汇编语言(语法分析…

【算法之栈与队列I】leetcode239. 滑动窗口最大值

232.用栈实现队列 力扣题目链接 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并…

模拟电路系列分享-运放的关键参数2

目录 概要 整体架构流程 技术名词解释 1.输入偏置电流: 2.输入失调电流 技术细节 总结; 概要 提示:这里可以添加技术概要 实际运放与理想运放具有很多差别。理想运放就像一个十全十美的人,他学习100 分,寿命无限长,长…

专业CPU信息检测工具:CPU-Z

今天小编为大家测试了一款轻量级的CPU处理器的测试工具,可以查看CPU的详细信息,以供各位同学们学习。 一、简单介绍 CPU-Z是一款非常流行的CPU检测软件,被广大用户所熟知。它是目前最受欢迎的CPU检测软件之一,除了Intel和AMD自带…

C#使用CsvHelper 实现csv文件导入导出功能

一、CsvHelper 库 可通过nuget进行安装 二、封装导入导出方法 public class MyCsvHelper { public static bool WriteCsv<T>(List<T> datas,string filePath "logs/TagData/tag.csv") { try { var current…

ERR! code ERR_SOCKET_TIMEOUT

问题 安装npm包&#xff0c;终端报错ERR! code ERR_SOCKET_TIMEOUT ERR! code ERR_SOCKET_TIMEOUT详细问题 笔者运行以下命令重新安装依赖项&#xff1a; npm install控制台报错&#xff0c;具体报错信息如下 npm ERR! code ERR_SOCKET_TIMEOUT npm ERR! network Socket t…

C语言:打印0-100000中的自幂数(水仙花数是其中一种)

题目&#xff1a; 求出 0&#xff5e;100000 之间的所有 自幂数 并输出。 自幂数是指一个n位数&#xff0c;其各位数字的n次方之和恰好等于该数本身&#xff0c; 如:153&#xff1d;1^3&#xff0b;5^3&#xff0b;3^3&#xff0c; 则153是一个自幂数。 思路&#xff1a; 总体…

5种raid冗余磁盘阵列

1 RAID&#xff1f;作用&#xff1f; 1.1 RAID RAID就是冗余磁盘阵列&#xff0c;通常称作「磁盘阵列」的RAID (Redundant Array of Independent Disks)功能&#xff0c;多半是应用在NAS这类肩负资料储存的设备上&#xff0c;它能依据NAS里硬盘数量、容量的不同&#xff0c;提…