Python从文件夹中所有excel文件中提取第一张表

jayjunior

我的文件夹中有一些文件。大多数但不是全部采用excel格式。文件名都是这样的:

doe_jane1234_question_12345_123456_JaneDoe.xlsx doe_john6578_question_56789_567890_JohnDoe.xlsx

我想使用Python打开每个excel文件,抓取第一张工作表,然后将其粘贴到新的excel文件中,然后在新文件中将新创建的工作表重命名为

doe_jane

doe_john

新的Excel文件将包含多个工作表,每个工作表对应于从中复制工作表的文件。

到目前为止,这是我想出的代码:首先,我在目录中创建一个空的excel文件,称为output.xlsx。

import pandas as pd
import os
import re

cwd = os.path.join("C:\\directory")
 
files = os.listdir(cwd) 
outputpath = os.path.join(cwd, 'output.xlsx') 

for i in files:
    # sheet name is the string before the firs number
    sheetname = re.search(r'^[^\d]*', i)    
    input_file_path = os.path.join(cwd,i)
    df_in = pd.read_excel(input_file_path ) 
    with pd.ExcelWriter(outputpath , engine="openpyxl", mode='a') as writer:
        df_in.to_excel(writer, sheet_name=sheetname)
   
    

当我运行这个我得到一个错误:

  File "C:\Anaconda3\lib\site-packages\openpyxl\workbook\child.py", line 90, in title
    m = INVALID_TITLE_REGEX.search(value)

TypeError: expected string or bytes-like object
CainãMax Couto-Silva

您的代码中存在一个简单的问题,导致该代码无法正常工作。问题是您没有将字符串作为的输出re.search而是从类返回一个对象re.Match(该对象不能解释为工作表名称)。看到:

re_output = re.search(r'^[^\d]*', 'doe_john6578_question_56789_567890_JohnDoe.xlsx')
print(re_output)

# <re.Match object; span=(0, 8), match='doe_john'>

我们需要使用.group()来获得匹配:

print(re_output.group())

# doe_john

因此,将线路从更改sheetname = re.search(r'^[^\d]*', i)sheetname = re.search(r'^[^\d]*', i).group()应该可行。


就是说,一旦创建一个空的excel文件(带有一个空的工作表),并且该文件位于同一文件夹中,您将获得第一张excel文件的工作表,最终将得到两个空的工作表。您可以根据需要创建文件来避免这种情况。看一下下面的代码:

import pandas as pd
import os
import re

cwd = os.path.join("C:\\directory")
 
files = os.listdir(cwd) 
outputpath = os.path.join(cwd, 'output.xlsx')

with pd.ExcelWriter(outputpath) as writer:
    for file in files:
        sheetname = re.search(r'^[^\d]*', file).group()
        input_file_path = os.path.join(cwd, file)
        pd.read_excel(input_file_path).to_excel(writer, sheet_name=sheetname) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将每个文件夹的第一张图片设置为其文件夹图标?

来自分类Dev

Excel工作簿的VBA循环文件夹,并删除除一张纸外的所有文件

来自分类Dev

替换文件夹中所有.sh文件的第一行

来自分类Dev

从 Excel 文件中所有工作表的列中复制数据并将其粘贴到一张工作表中

来自分类Dev

提取第一张表的第一行

来自分类Dev

重命名R文件夹中所有Excel文件的同一列

来自分类Dev

上传文件时,我仅获得阵列中的第一张图像,我希望阵列中的所有图像。使用Codeigniter

来自分类Dev

SSIS脚本任务C#编码可动态选择具有特定名称的最新Excel文件的第一张纸

来自分类Dev

获取一张表中所有行的总和

来自分类Dev

打印文件夹中所有文件的第一行和最后一行

来自分类Dev

OpenXml WorksheetParts.First()并不总是MS Excel显示的第一张表

来自分类Dev

如何获得不是第一张的表?

来自分类Dev

转到未隐藏的第一张表

来自分类Dev

FlexSlider轮播在第一张幻灯片中滑动所有图像-WordPress

来自分类Dev

从具有多个Excel文件和多个选项卡的文件夹中提取所有电子邮件到python中的pandas数据框中

来自分类Dev

没有点击的第一张图片

来自分类Dev

读取带有子文件夹的文件夹中所有txt文件的第一行,并打印文件名,第一行到另一个文件

来自分类Dev

导入的工作表随机插入为第一张而不是最后一张

来自分类Dev

从邮箱中提取所有邮件,包括所有文件夹和子文件夹

来自分类Dev

Powershell - 列出目录中的所有文件夹,在每个文件夹中提取最新的 .bak 文件,压缩它,将其复制到一个目录

来自分类Dev

从NSUrl提取所有文件夹

来自分类Dev

循环浏览子文件夹中的 Excel 文件并将数据复制并粘贴到一张纸上

来自分类Dev

比较python中文件夹中所有csv文件之间的一列并输出结果

来自分类Dev

查找文件夹中所有文件的行数

来自分类Dev

查找文件夹中所有文件的行数

来自分类Dev

文件夹中所有文件的awk脚本

来自分类Dev

如何打印文件夹中所有文件的名称

来自分类Dev

VBA 更改文件夹中所有文件的名称

来自分类Dev

计算一个文件夹中所有文件中所有出现的字符串

Related 相关文章

  1. 1

    如何将每个文件夹的第一张图片设置为其文件夹图标?

  2. 2

    Excel工作簿的VBA循环文件夹,并删除除一张纸外的所有文件

  3. 3

    替换文件夹中所有.sh文件的第一行

  4. 4

    从 Excel 文件中所有工作表的列中复制数据并将其粘贴到一张工作表中

  5. 5

    提取第一张表的第一行

  6. 6

    重命名R文件夹中所有Excel文件的同一列

  7. 7

    上传文件时,我仅获得阵列中的第一张图像,我希望阵列中的所有图像。使用Codeigniter

  8. 8

    SSIS脚本任务C#编码可动态选择具有特定名称的最新Excel文件的第一张纸

  9. 9

    获取一张表中所有行的总和

  10. 10

    打印文件夹中所有文件的第一行和最后一行

  11. 11

    OpenXml WorksheetParts.First()并不总是MS Excel显示的第一张表

  12. 12

    如何获得不是第一张的表?

  13. 13

    转到未隐藏的第一张表

  14. 14

    FlexSlider轮播在第一张幻灯片中滑动所有图像-WordPress

  15. 15

    从具有多个Excel文件和多个选项卡的文件夹中提取所有电子邮件到python中的pandas数据框中

  16. 16

    没有点击的第一张图片

  17. 17

    读取带有子文件夹的文件夹中所有txt文件的第一行,并打印文件名,第一行到另一个文件

  18. 18

    导入的工作表随机插入为第一张而不是最后一张

  19. 19

    从邮箱中提取所有邮件,包括所有文件夹和子文件夹

  20. 20

    Powershell - 列出目录中的所有文件夹,在每个文件夹中提取最新的 .bak 文件,压缩它,将其复制到一个目录

  21. 21

    从NSUrl提取所有文件夹

  22. 22

    循环浏览子文件夹中的 Excel 文件并将数据复制并粘贴到一张纸上

  23. 23

    比较python中文件夹中所有csv文件之间的一列并输出结果

  24. 24

    查找文件夹中所有文件的行数

  25. 25

    查找文件夹中所有文件的行数

  26. 26

    文件夹中所有文件的awk脚本

  27. 27

    如何打印文件夹中所有文件的名称

  28. 28

    VBA 更改文件夹中所有文件的名称

  29. 29

    计算一个文件夹中所有文件中所有出现的字符串

热门标签

归档