input输入表头保存excel文件

input输入表头

在这里插入图片描述

input输入表头
(input内除了/,空格 回车 标点符号等
全部作为单元格分隔符)保存/storage/emulated/0/代码文件/
没有就创建文件名命名方法:编号. 库  时间戳

嗨!听说你有个需求,想根据用户输入的内容创建一个Excel表格,并按照指定的命名方法来保存这个文件。哈哈!下面就给你看一个示例代码,让你瞧瞧是怎么做到的:

import pandas as pd
import os
import re
import time# 获取用户输入
header = input("请输入表头内容:")# 使用正则表达式替换除了斜杠、空格、回车和标点符号之外的字符为空格
header = re.sub(r'[^\w\s/]', ' ', header)# 使用空格作为分隔符,将表头拆分成列表
header_list = header.split()# 创建空的DataFrame
df = pd.DataFrame()# 在DataFrame中添加表头
df.columns = header_list# 创建保存目录
directory = '/storage/emulated/0/代码文件/'
if not os.path.exists(directory):os.makedirs(directory)# 生成文件名
file_name = '{}.{}_{}.xlsx'.format('编号', '库', int(time.time()))# 保存Excel文件
excel_file = os.path.join(directory, file_name)
df.to_excel(excel_file, index=False)

首先,我们要获取用户输入的表头内容。嗯,我会不厌其烦地把这个内容转换成Excel表格能接受的样子,去掉一些有点奇怪的符号。

然后,我们把处理好的表头放进一个全新而空白的Excel表格中,让它在那里等着,耐心地等着。

接下来,我们要创建一个特别的目录,为了保存这个特别的Excel文件。如果这个目录已经存在,就别管它了;如果不存在,我会亲自帮你建立起来。

让我们看看这段代码在“生成Excel文件”这个过程中进行了哪些操作:

开始
├─ 获取用户输入表头内容
│   └─ 干掉不需要的字符
├─ 拆分表头为列表
├─ 创建空的DataFrame
├─ 将表头添加到DataFrame中
├─ 创建保存目录
│   ├─ 如果目录不存在,创建该目录
│   └─ 如果目录已经存在,直接进入下一步
├─ 生成文件名
│   ├─ 包括一个编号
│   ├─ 一个库
│   └─ 当前时间的整数形式
├─ 保存Excel文件
│   ├─ 将DataFrame保存为Excel格式
│   ├─ 不要在Excel中显示行号
│   └─ 保存文件到指定目录下
└─ 结束

现在是时候给你的Excel文件起个独一无二的名字了!名字里包含一个编号,还有一个库,最后再加上当前的时间,这样才够酷对吧!

最后一步,就是把这个充满了期待的Excel文件保存起来了。我会小心翼翼地将这个表格以Excel格式保存好,并告诉它不要在Excel中显示行号。然后,我会把它放到我们刚刚特地创建的目录里,好让你一眼就能找到。

哈哈,到此为止!任务完成了,我们成功地根据用户需求创建了一个带有特别命名的Excel文件。感觉很有成就感对吧!

但是我们输入出错了

在这里插入图片描述

这是为什么?❓

出现错误的原因是在创建空的DataFrame后,没有正确地设置表头。在设置表头时,长度不匹配导致了ValueError。

问题出在这一行代码:
df.columns = header_list

根据错误信息,可以看到预期的轴(Expected axis)应该有0个元素,但新值(new values)却有4个元素。这说明你的header_list列表长度为4,但是空的DataFrame并没有指定任何轴。

在这里插入图片描述

为了解决这个问题,你需要先手动为DataFrame添加一行空数据,然后再设置表头。修改的代码如下:

# 创建空的DataFrame,并添加一行空数据
df = pd.DataFrame([[]])# 在DataFrame中添加表头
df.columns = header_list

这样修改后,你应该能够看到新的错误❌答案
在这里插入图片描述

根据你提供的错误信息,问题仍然是由于长度不匹配导致的ValueError。根据错误信息,预期的轴(Expected axis)应该有0个元素,但新值(new values)却有3个元素。

这说明你的header_list列表长度为3,但是空的DataFrame并没有指定任何轴。

为了解决这个问题,请按照以下步骤修改代码:

  1. 创建一个空的DataFrame,并指定一个行(axis=0)。
  2. 在DataFrame中添加表头,确保表头与header_list的长度相匹配。

修改的代码如下:

# 创建空的DataFrame,并添加一行空数据
df = pd.DataFrame(columns=header_list)# 保存Excel文件
excel_file = os.path.join(directory, file_name)
df.to_excel(excel_file, index=False)

在这里插入图片描述
这样修改后,可以看到我们终于不再报错了。

在这里插入图片描述
你应该能够成功设置表头并继续执行后续的操作。
在这里插入图片描述

我们胜利了

修改后的代码为


import pandas as pd  # 导入pandas库,用来玩转数据
import os  # 导入os模块,和电脑文件玩耍
import re  # 导入re模块,用来和字符们搞点小花样
import time  # 导入time模块,和时间交个朋友# 获取用户输入
header = input("请输入表头内容:")  # 用户大佬,请告诉我表头是啥子# 使用正则表达式替换除了斜杠、空格、回车和标点符号之外的字符为空格
header = re.sub(r'[^\w\s/]', ' ', header)  # 通过施展魔法,把不属于字母数字、斜杠、空格、回车和标点符号的字符都变为空格# 使用空格作为分隔符,将表头拆分成列表
header_list = header.split()  # 把表头按照空格进行裁剪,装进一个列表# 创建空的DataFrame,并添加一行空数据
df = pd.DataFrame(columns=header_list)  # 准备一个空荡荡的表格,列名就是刚才小伙伴们给的表头# 在DataFrame中添加表头
df.columns = header_list  # 让这个表格的列名变成刚才想好的表头们# 创建保存目录
directory = '/storage/emulated/0/代码文件/'  # 准备好一个地方,专门用来保存代码文件# 看看这个地方存不存在,不存在就创建一个
if not os.path.exists(directory):  # 如果这个地方不存在的话os.makedirs(directory)  # 那咱们老老实实地创建一个目录吧# 生成文件名
file_name = '{}.{}_{}.xlsx'.format('编号', '库', int(time.time()))  # 按照规矩来,给这个文件宝贝安排一个名字# 保存Excel文件
excel_file = os.path.join(directory, file_name)  # 告诉电脑宝贝,这个文件要保存在哪里
df.to_excel(excel_file, index=False)  # 把上面那个空荡荡的表格给保存到Excel文件里面去,别忘了把索引列也去掉哦~

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.0 探索API调试事件原理

本章笔者将通过Windows平台下自带的调试API接口实现对特定进程的动态转存功能,首先简单介绍一下关于调试事件的相关信息,调试事件的建立需要依赖于DEBUG_EVENT这个特有的数据结构,该结构用于向调试器报告调试事件。当一个程序发生异常事件或者…

28384-2012 平台式平型网版印刷机 阅读笔记

声明 本文是学习GB-T 28384-2012 平台式平型网版印刷机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了平台式平型网版印刷机的术语和定义、型式与基本参数、要求、试验方法、检验规则、 标志、包装、运输与贮存。 本标准适用…

全志ARM926 Melis2.0系统的开发指引①

全志ARM926 Melis2.0系统的开发指引① 1. 编写目的2. Melis2.0 系统概述3. Melis2.0 快速开发3.1. Melis2.0 SDK 目录结构3.2. Melis2.0 编译环境3.3. Melis2.0 固件打包3.4. Melis2.0 固件烧录3.5.串口打印信息3.6. Melis2.0 添加和调用一个模块3.6.1. 为什么划分模块&#xf…

【Leetcode】二分查找合集

二分查找合集 二分模板leetcode 704.二分查找题目思路代码 Leetcode 34.在排序数组中查找元素的第⼀个和最后⼀个位置题目思路代码 35. 搜索插入位置题目思路代码 69.X的平方根题目思路代码 852. 山脉数组的峰顶索引题目代码 162.寻找峰值题目思路代码 153. 寻找旋转排序数组中…

C++(List)

本节目标: 1.list介绍及使用 2.list深度剖析及模拟实现 3.list和vector对比 1.list介绍及使用 1.1list介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,…

DevEco Studio设置Nodejs提示路径只能包含英文、数字、下划线等

安装DevEco Studio 3.1.1 Release 设置Nodejs路径使用nodejs默认安装路径 (C:\Program Files\nodejs) 提示只能包含英文、数字、下划线等 , 不想在安装nodejs请往下看 nodejs默认路径报错 修改配置文件 1、退出DevEco Studio 2、打开配置文件 cmd控制台…

装饰器模式详解和实现(设计模式 二)

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地将对象添加到现有对象中,以提供额外的功能,同时又不影响其他对象。 实现示例 1.定义一个接口或抽象类,表示被装饰对象的公共接口 //抽…

分布式锁:四种方案解决商品超卖的方案

一 分布式锁 1.1 分布式锁的作用 在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下&#xff…

CAA的VS Studio安装

文章目录 一、官网下载VS Studio二、勾选如下安装信息三、更改软件安装位置四、17专业版密钥 一、官网下载VS Studio 官网下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 下载对应版本后,以VS Studio2017为例: 二、勾…

[架构之路-228]:计算机硬件与体系结构 - 硬盘存储结构原理:如何表征0和1,即如何存储0和1,如何读数据,如何写数据(修改数据)

目录 前言: 一、磁盘的盘面组成 1.1 磁盘是什么 ​编辑1.2 磁盘存储介质 1.3 磁盘数据的组织 1.3.1 分层组织:盘面号 1.3.2 扇区和磁道 1.3.3 数据 1.3.4 磁盘数据0和1的存储方式 1.3.5 磁盘数据0和1的修正方法 1.3.6 磁盘数据0和1的读 二、…

OpenMMLab【超级视客营】——支持InverseForm Loss(MMSegmentation的第三个PR)

文章目录 1. 任务目标1.1 issue1.2 原理相关资料(论文讲解)InverseFormSTN(Spatial Transformer Networks) 1.3 实现相关资料(相关PR) 2. 理解原理3. 代码实现3.X checklist3.0 Issue中的有效内容3.1 MMSegmentation支持multiple …

使用正则表达式批量修改函数

贪心匹配,替换中的$1代表括号中的第一组。 使用[\s\S\r]代表所有字符,同时加个问号代表不贪心匹配: