我写了一些逻辑来从简历中提取过去的一年。我使用学位列表的查找提取学位。
以下是文字和代码的链接 - https://github.com/karimkhanp/resumeparser
在CV中获得所有学位后,我会进行分割并检查每一行。如果任何行中存在任何学位,则检查在同一行中是否有以19或20开头的任何4位数字。考虑一年。
逻辑代码:
def get_passingyear(self, text, education):
text_lines = text.splitlines()
passing_year = []
for line in text_lines:
for degree in education:
if degree in line:
year = re.findall('\b(19|20)\d{2}\b', text)
p_year = {}
if len(year) > 1:
year = '-'.join(year)
p_year[degree]= year
break
else:
p_year[degree]= year
break
有没有更好的方法来编写这段代码?如果获取学位的年份,我已添加break
以退出循环。
我很欣赏它有相同的更好的逻辑
答案 0 :(得分:0)
您可以使用EAFP原则并尝试使用datetime模块:
import datetime
....
if degree in line:
try:
year = re.findall('\b(19|20)\d{2}\b', text)
# Try to make a date out of it
datetime.date(year=int(year))
except TypeError:
# if it is not a date, you can treat it here
pass
....
这样你就不会冒险获得不是一年的东西 如果您的所有日期都在这些文件中隐藏了一个模式,您可以使用datetime module中的strptime来获取此模式中的日期