>  기사  >  백엔드 개발  >  Python을 사용하여 첨부 파일을 정리하는 방법

Python을 사용하여 첨부 파일을 정리하는 방법

不言
不言원래의
2018-06-04 17:42:501440검색

이 글은 Python을 사용하여 첨부 파일을 정리하는 방법에 대한 관련 지식 포인트를 모았습니다. Python을 배우는 친구들은 따라해보고 테스트해 볼 수 있습니다.

현재 내 폴더에는 이력서가 500개가 넘습니다. 학교, 학력 등의 정보를 알고 싶다면 각 단어를 열어서 봐야 하는데 시간이 너무 많이 걸립니다. 이때 Python이 조치를 취해야 합니다.

Goal

현재 스크린샷과 유사한 단어가 600개 이상 있습니다. 간단하게 정리하고 싶습니다.

탐색용 Excel을 정리하고(디렉토리와 유사) 빠르게 엑셀을 통해 찾으세요. 아래와 같이 원하는 첨부파일로 이동합니다.

콘크리트 구현

목표를 가지고 이를 달성하는 방법에 대해 자세히 이야기해 보겠습니다. 정리 아이디어는 비교적 간단합니다. 즉, 모든 워드 파일을 순회하여 해당 워드에 넣는다. 핵심 정보를 얻어 엑셀에 저장한다.

사용되는 주요 모듈은 다음과 같습니다.

import xlsxwriter
import subprocess
import os
import docx
import sys
import re

xlsxwriter는 주로 Excel 작업에 사용됩니다.

subprocess는 주로 명령줄을 호출하는 데 사용됩니다. docx 모듈은 doc 단어 파일을 구문 분석할 수 없기 때문에 구문 분석하기 전에 doc 파일을 docx 파일로 변환합니다.

os는 주로 폴더를 탐색하여 파일을 얻는 데 사용됩니다.

docx는 주로 워드 문서를 구문 분석하는 데 사용됩니다.

파일 이름을 표준화하세요

우선 파일 이름을 표준화합시다. subprocess.call을 사용하여 명령을 호출할 때 공백, 특수 기호 등은 이스케이프할 수 없고 오류가 발생할 수 있으므로 간단하게 정리하세요. 이 잠재적인 문제가 발생하기 전에.

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))

파일 탐색

이후에는 비즈니스에 착수하여 구문 분석을 위해 각 파일을 탐색할 수 있습니다.

path='/Users/cavin/Desktop/files'
for filename in os.listdir(path):
  ...具体逻辑...

여기서 문제가 발생했습니다. 먼저 docx 모듈이 구문 분석을 할 수 없습니다. 문서의 경우, Mac을 사용하고 있기 때문에 win32com 모듈을 사용할 수 없습니다. 이 문제는 나중에 Google에서 명령을 통해 docx로 변환할 수 있다는 것을 발견했습니다.

여기서 변환된 docx 파일 스타일이 손실되지만 이는 텍스트 정보를 얻는 능력에 영향을 미치지 않습니다.

그래서 이런 코드가 있습니다. doc 파일인 경우 먼저 docx로 변환한 후 파싱한 후 제거합니다.

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) #移除转换的文件

단어 파일을 구문 분석합니다

다음 단계는 파일을 구문 분석하는 것입니다. docx 모듈을 통해 구현하는 것은 쉽습니다. 각 행을 순회하는 것입니다. 일부 키워드와 기호를 기반으로 분석합니다. (각 이력서의 형식은 기본적으로 동일합니다.)

doc = docx.Document(fullname)
for para in doc.paragraphs:
  print(para.text)
  ...具体解析逻辑...

Fill in excel

파싱된 데이터를 Excel에 직접 채울 수 있습니다.

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:

을 사용할 수 있습니다.

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

문제점

이때 해당 기능은 기본적으로 구현할 수는 있지만 완벽하지는 않습니다. 주된 이유는 워드의 형식이 표준이 아니기 때문입니다. 내가 원하는 데이터를 구하는데, 본명, 학교 등은 대부분 잡혔기 때문에 가벼운 작업이라고 볼 수 있다.

요약

파이썬을 사용하면 여전히 반복 작업의 양이 어느 정도 줄어들지만, 일부 비표준적인 작업을 처리하는 좋은 방법은 없는 것 같습니다.

이러한 비표준을 수용하기 위해 논리를 추가할 수 있지만 분명히 노력과 결과는 다소 불균형합니다.

효율을 높이기 위해 손에 있는 도구를 잘 활용하는 것이 사실입니다. 바보 같은 작업 중복인지, 코드를 사용하여 작업 중복을 줄이는지는 어떻게 보느냐에 달려 있습니다.

관련 권장 사항;

Python을 사용하여 HTTP 서비스 및 파일 공유 서비스를 빠르게 구축

Python을 사용하여 파일 콘텐츠 변경 코드 모니터링

위 내용은 Python을 사용하여 첨부 파일을 정리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.