Maison  >  Article  >  développement back-end  >  Comment organiser les pièces jointes en utilisant Python

Comment organiser les pièces jointes en utilisant Python

不言
不言original
2018-06-04 17:42:501445parcourir

Cet article a compilé des points de connaissances pertinents sur la façon d'utiliser Python pour organiser les pièces jointes. Les amis qui apprennent Python peuvent le suivre et le tester.

Actuellement, il y a plus de 500 CV dans mon dossier. Si je veux connaître certaines informations, telles que l'école, les diplômes universitaires, etc., je dois ouvrir chaque mot pour les visualiser, ce qui prend trop de temps. consommant. À ce stade, Python doit agir.

Objectif

Il y a actuellement plus de 600 mots similaires à ceux de la capture d'écran. Je souhaite les organiser simplement :

Vous pouvez organiser un fichier Excel pour la navigation (semblable à un répertoire), et vous pouvez utiliser Excel pour localiser rapidement les pièces jointes souhaitées, comme indiqué ci-dessous :

Mise en œuvre spécifique

Avec l'objectif, parlons en détail de la manière d'y parvenir. L'agencement des idées est relativement simple, c'est-à-dire. parcourez tous les fichiers Word, obtenez les informations clés dans Word et enregistrez-les dans Excel.

Voici les principaux modules utilisés :

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

xlsxwriter sert principalement à faire fonctionner Excel, xlsxwriter ne peut être utilisé que pour écrire, L'efficacité est supérieure à xlwt et la quantité de données n'est pas importante. Vous pouvez utiliser xlwt.

le sous-processus est principalement utilisé pour appeler la ligne de commande. Étant donné que le module docx ne peut pas analyser le fichier doc word, il convertit le fichier doc en fichier docx avant l'analyse.

os est principalement utilisé pour parcourir des dossiers afin d'obtenir des fichiers.

docx est principalement utilisé pour analyser des documents Word.

Standardiser le nom du fichier

Nous standardisons d'abord le nom du fichier, car lorsque nous utilisons subprocess.call pour appeler des commandes, des espaces, des symboles spéciaux, etc. Il n'y a aucun moyen d'y échapper et une erreur sera signalée, alors autant nettoyer ce problème potentiel au préalable.

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

Parcourir les fichiers

Après cela, nous pouvons nous mettre au travail et parcourir chaque fichier . Analyse :

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

J'ai rencontré un problème ici. Premièrement, le module docx ne peut pas analyser le document Word de doc. il ne peut pas utiliser le module win32com, ce problème est plus embarrassant. Plus tard, Google a découvert que doc pouvait être converti en docx via des commandes.

Notez ici que le style du fichier docx converti est perdu, mais cela n'affecte pas ma capacité à obtenir des informations textuelles.

Il y a donc ce code. S'il s'agit d'un fichier doc, il sera d'abord converti en docx, puis supprimé après analyse.

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

Analyser le fichier Word

L'étape suivante consiste à analyser le fichier, qui est très simple grâce au module docx. C'est facile à mettre en œuvre. Je ne publierai pas la logique d'analyse spécifique. Il parcourt simplement chaque ligne et intercepte les données en fonction de certains mots-clés et symboles (le format de chaque CV est fondamentalement le même)

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

Remplir Excel

Les données analysées peuvent être renseignées directement dans 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, '文档链接')

Ici, nous parlons principalement de remplir le lien du document Puisqu'il est destiné à d'autres personnes, assurez-vous simplement que la pièce jointe et Excel sont dans le même dossier et utilisez. un chemin relatif pour y parvenir Vous pouvez utiliser la fonction Excel HYPERLIEN :

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

Point problématique

À ce stade, les fonctions correspondantes peuvent être implémentées, mais ce n'est pas parfait. La raison principale est que le format dans Word n'est pas standard et qu'il n'existe pas de bon moyen d'obtenir avec précision les données que je souhaite. des grandes écoles et autres l'ont compris, ce qui peut être considéré comme une tâche plus légère.

Résumé

L'utilisation de Python réduit encore une certaine quantité de travail répétitif, mais il ne semble pas y avoir de bon moyen de gérer certaines choses non standard.

Bien que de la logique puisse être ajoutée pour s'adapter à ces non-normes, il est évident que l'effort et le résultat ne sont pas proportionnels.

Il est vrai de faire bon usage des outils disponibles pour améliorer l'efficacité. Quant à savoir s'il s'agit d'une duplication insensée du travail ou s'il faut utiliser du code pour réduire la duplication du travail, cela dépend de la façon dont vous le faites. regarde-le.

Recommandations associées ;

Utilisez Python pour créer rapidement des services HTTP et des services de partage de fichiers

Utilisez Python pour surveiller le contenu des fichiers change le code

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn