如何用python整理附件


本文摘自php中文网,作者不言,侵删。

本篇文章给大家整理了关于如何用python整理附件的相关知识点,学习python的朋友可以跟着测试下。

目前我的文件夹中有500多份简历,如果我想知道一些信息,比如学校,学历之类的,我需要打开每一份word去查看,太耗时间了。这个时候python需要出马了。

目标

目前类似截图中的word有600+,想简单的进行整理:

可以整理出一份excel用于导航(类似目录),可以通过excel来快速定位到所要的附件,如下图效果:

具体实现

有了目标,就具体说说如何实现的,整理思路还是比较简单的,就是遍历所有的word文件,将word中关键的信息获取到并保存到excel中。

这里列下主要用到的模块:

1

2

3

4

5

6

import xlsxwriter

import subprocess

import os

import docx

import sys

import re

xlsxwriter主要用来操作excel,xlsxwriter只能用来写,效率上比xlwt要高,数据量不多,用xlwt也ok。

subprocess主要用来调用命令行,因为docx模块无法解析doc的word文件,所以在解析前将doc的文件转换成docx文件。

os主要用于遍历文件夹获取文件。

docx主要用来解析word文档。

规范下文件名

首先我们先规范下文件名称,因为在使用subprocess.call调用命令时,空格,特殊符号之类的没办法转义导致报错,所以干脆在之前就清理掉这个潜在问题。

1

2

3

4

def remove_doc_special_tag():

  for filename in os.listdir(path):

    otherName = re.sub("[\s+\!\/_,$%^*(+\"\')]+|[+——()?【】“”!,。?、~@#¥%……&*()]+", "",filename)

    os.rename(os.path.join(path,filename),os.path.join(path,otherName))

遍历文件

之后我们就可以开始正题,遍历每个文件进行解析:

1

2

3

path='/Users/cavin/Desktop/files'

for filename in os.listdir(path):

  ...具体逻辑...

这里碰到一个问题,首先是docx模块无法解析doc的word文档,由于又是使用的mac,所以也无法使用win32com模块,这个问题就比较尴尬,后来google发现可以通过命令将doc转换成docx。

这里注意下转换后的docx文件样式是丢失的,但这不影响我获取文本信息。

于是就有了这段代码,如果是doc的文件,优先转换成docx,待解析完之后再移除掉。

1

2

3

4

5

if filename.endswith('.doc'):

  subprocess.call('textutil -convert docx {0}'.format(fullname),shell=True)

  fullname=fullname[:-4]+".docx"

  sheetModel= etl_word_files(fullname)#解析文本逻辑

  subprocess.call('rm {0}'.format(fullname),shell=True) #移除转换的文件

解析word文件

接下来就是解析文件了,通过docx模块很容易实现,具体的解析逻辑就不贴了,就是遍历每一行,根据一些关键字,符号来截取数据(每个简历格式基本上差不多的)

1

2

3

4

doc = docx.Document(fullname)

for para in doc.paragraphs:

  print(para.text)

  ...具体解析逻辑...

填充excel

解析完的数据就可以直接填充excel了:

1

2

3

4

5

6

7

8

9

10

11

12

13

workbook = xlsxwriter.Workbook('report_list.xlsx')

worksheet = workbook.add_worksheet('list')

worksheet.write(0,0, '序号')

worksheet.write(0,1, '姓名')

worksheet.write(0,2, '性别')

worksheet.write(0,3, '年龄')

worksheet.write(0,4, '籍贯')

worksheet.write(0,5, '目前所在地')

worksheet.write(0,6, '学历')

worksheet.write(0,7, '学校')

worksheet.write(0,8, '公司')

worksheet.write(0,9, '职位')

worksheet.write(0,10, '文档链接')

这里主要说下文档链接的填充,由于是要给其他人的,只要保证附件和excel在同一个文件夹下,采用相对路径的方式来实现,可以使用Excel的函数HYPERLINK:

1

worksheet.write(index,10, '=HYPERLINK(\"./'+filename+'\",\"附件\")')

问题点

到这里,基本上可以实现相应的功能了,但不是很完美,主要是word中的格式不标准,没有很好的方式去准确获取到我要的数据,但主要的姓名学校之类的大多数都抓到了,也算减轻点任务啦。

总结

利用python还是减少了一定的重复劳动,但面对一些不标准的东东貌似还没有很好的方式。

虽然可以增加逻辑来兼容这些不标准,但显然这个付出和产出就有点不成正比了。

利用好手上的工具去提高效率才是真的,至于是傻瓜式的重复工作,还是通过代码来减少重复劳动,就看你自己怎么看啦。

相关推荐;

使用Python快速搭建HTTP服务和文件共享服务

使用Python监控文件内容变化代码

以上就是如何用python整理附件的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python如何无视大小写

Python怎么安装jieba库?

Python数据结构:一个被低估的namedtuple(一)

Python怎么将整数反转输出

Python中绝对值怎么表示

Python3.7.2如何安装pil库

Python 是什么?

如何将字符串转换为datetime

Python安装流程指南

Python使用opencv读取图片的实例详解

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...