首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查嵌套循环中的字符串是否存在

检查嵌套循环中的字符串是否存在
EN

Stack Overflow用户
提问于 2017-10-15 06:50:12
回答 1查看 633关注 0票数 1

我正在写函数,试图从简历中提取用户名。

大多数情况下,第一行包含用户名,但有时我的学生也会写简历,简历标题在第一行。所以我想忽略这一行,检查下一行。

如果简历前四行中没有跳过单词的行,则将其视为人名。

代码语言:javascript
复制
def name_extractor(self, text):
    skip_words = ['CURRICULUM', 'VITAE', 'resume']
    text_lines = text.split('\n')
    name = ''
    # pdb.set_trace()        
    for  i in range(0,4):
        if text_lines[i]:
            for word in skip_words:
                if word.lower() in text_lines[i]:
                    break
                else:
                    name = text.split('\n')[i]
                    # print name
                    return name         
    return name

在这里,我试图写逻辑,但它是不正确的工作。如果有第一行作为简历,甚至它的名字作为简历。

我怎样才能跳过skip_list中有任何单词的起始行,并打印正确的名称。

我很感谢你在这方面的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-15 07:35:57

您的代码没有按您预期的方式工作的主要原因是,只要skip_words中的任何一个不在一行文本中,函数就会返回。

你需要的是基本面的帮助,而不是这个问题的答案。尝试将代码粘贴到pythontutor.com中,逐行查看执行情况。

  • 您的代码不使用(也不需要)面向对象的方法。当函数self是在class中定义的方法时,将使用class参数。您从未在函数定义中使用self这一事实表明,您可以只在类定义之外编写常规函数定义。删除self参数。
  • 你不是在把小写和小写比较。您的代码将硬编码列表的项转换为小写,但文本参数仍然与大小写相同。在skip_words常量中使用小写,并对传递给函数的文本调用lower,而不是对常量调用lower
  • 如果迭代列表元素本身,Python代码通常更具可读性。使用变量来表示每个元素,而不是访问列表元素的计数器。这还将消除用于检查前四行是否存在的if语句的需要。
  • 通常最好在一个函数中只使用一个return语句。
  • break将退出for循环,我认为您打算让continue跳过for循环的其余部分,进入下一次迭代。 def name_extractor(文本):skip_words =“课程”、“简历”、“简历”text_lines = text.split('\n')用于text_lines:4中的行: line_words = set(line.lower().split(‘’)如果不是line_words.intersection(skip_words):返回行返回‘’
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46752472

复制
相关文章

相似问题

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