首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在docx文件中搜索一个单词,并在关键字文件夹中复制该文件。

在docx文件中搜索一个单词,并在关键字文件夹中复制该文件。
EN

Stack Overflow用户
提问于 2018-09-01 06:08:39
回答 1查看 326关注 0票数 1

我正在执行一项任务,其中我有一个文本文件,其中包含特定的关键字喜好(C#、Angular、Python、MySQL),并且必须创建文件夹。在此之后,我必须在简历中搜索这些关键字,如果找到,将其复制到每个文件夹。

例如,A有C#和角的技能,所以他/她的简历将在两个文件夹中。

我已经完成了文件夹的创建,我需要帮助在.docx文件中搜索单词并复制到请求的文件夹。我已经寻找网上的东西,但无法继续。可以为我提供一些如何在文档中搜索单词/字符串的线索。文件

这是我的代码:

文件夹创建

代码语言:javascript
运行
复制
 InputFile = "ResumeKeyword.txt"
 fileOpen  = open(InputFile)        

 for keyword in fileOpen.readline().split(','):
     print(keyword)
     os.makedirs(keyword)

 fileOpen.close()

和阅读docx

代码语言:javascript
运行
复制
from docx import Document
document = Document('A.docx')
word = "Angular"
for x in document.paragraphs:
    print(x.text)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-01 07:06:47

希望这能帮上忙:

代码语言:javascript
运行
复制
from docx import Document
from shutil import copyfile
import os, re, random

# Folder which contains all the resumes
ALL_RESUMES = "all_resumes/"
# The folder which will contain the separated resumes
SEGREGATED_RESUMES = "topic_wise_resumes/"

def get_keywords(keywords_file, create_new = False):
    """
    Get all keywords from file keywords_file. We get all keywords in lower case to remove confusion down the line.
    """
    fileOpen  = open(keywords_file, "r")        
    words = [x.strip().lower() for x in fileOpen.readline().split(',')]

    keywords = []
    for keyword in words:
        keywords.append(keyword)
        if(not(os.path.isdir(SEGREGATED_RESUMES))):
            os.makedirs(SEGREGATED_RESUMES + keyword)

    return keywords

def segregate_resumes(keywords):
    """
    Copy the resumes to the appropriate folders
    """
    # The pattern for regex match
    keyword_pattern = "|".join(keywords)

    # All resumes
    for filename in os.listdir(ALL_RESUMES):
        # basic sanity check
        if filename.endswith(".docx"):
            document = Document(ALL_RESUMES + filename)
            all_texts = []
            for p in document.paragraphs:
                all_texts.append(p.text)

            # The entire text in the resume in lowercase
            all_words_in_resume = " ".join(all_texts).lower()

            # The matching keywords
            matches = re.findall(keyword_pattern, all_words_in_resume)

            # Copy the resume to the keyword folder
            for match in matches:
                copyfile(ALL_RESUMES + filename, SEGREGATED_RESUMES + match + "/" + filename)

def create_sample_resumes(keywords, num = 5):
    """
    Function to create sample resumes for testing
    """
    for i in range(num):
        document = Document()
        document.add_heading('RESUME{}'.format(i))
        skills_ = random.sample(keywords, 2)
        document.add_paragraph("I have skills - {} and {}".format(*skills_))
        document.save(ALL_RESUMES + "resume{}.docx".format(i))

keywords = get_keywords("ResumeKeyword.txt")
print(keywords)
# create_sample_resumes(keywords)
segregate_resumes(keywords)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52125380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档