我正在写函数,试图从简历中提取用户名。
大多数情况下,第一行包含用户名,但有时我的学生也会写简历,简历标题在第一行。所以我想忽略这一行,检查下一行。
如果简历前四行中没有跳过单词的行,则将其视为人名。
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中有任何单词的起始行,并打印正确的名称。
我很感谢你在这方面的帮助。
发布于 2017-10-15 07:35:57
您的代码没有按您预期的方式工作的主要原因是,只要skip_words中的任何一个不在一行文本中,函数就会返回。
你需要的是基本面的帮助,而不是这个问题的答案。尝试将代码粘贴到pythontutor.com中,逐行查看执行情况。
self是在class中定义的方法时,将使用class参数。您从未在函数定义中使用self这一事实表明,您可以只在类定义之外编写常规函数定义。删除self参数。skip_words常量中使用小写,并对传递给函数的文本调用lower,而不是对常量调用lower。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):返回行返回‘’https://stackoverflow.com/questions/46752472
复制相似问题