Найти нужные слова/сочетания слов в строке Python
учу Python и мне надо без импорта библиотек решить следующее задание. У меня есть строки следующие строки(их много, это пример просто):
new_str = "Высшее образование 1988 Московский университет"
new_str1 = "Среднее специальное образование 2000 Воронежский колледж"
new_str2 = "Среднее образование 1997 Колледж в Туле"
new_str3 = "Неоконченное высшее 2010 в Петербурге"
Из этих строк мне нужны только виды образования, которые относятся к следующим категориям: "высшее", "среднее", "среднее специальное", "неоконченное высшее" Я делала через цикл, одно слово получается, а словосочетание - нет. Мой код:
def detect_education(arg):
words = arg.lower()
words = words.split(" ")
words = words[:2]
for i in words:
if i == "высшее":
return "высшее"
elif i == "неоконченное" and i == "высшее":
return "неоконченное высшее"
elif i == "среднее" and i == "специальное":
return "среднее специальное"
elif i == "среднее":
return "среднее"
i +=1
Помогите, пожалуйста, решить эту задачу.
Ответы (3 шт):
Если образование всегда стоит в начале строки, то
def detect_education(arg):
return " ".join(arg.lower().split(" ")[:2])
sochetanie = [
"Высшее",
"Среднее",
"Среднее специальное"
#и далее какие нужны
]
stringi = [
"Высшее образование 1988 Московский университет",
"Среднее специальное образование 2000 Воронежский колледж",
"Среднее образование 1997 Колледж в Туле",
"Неоконченное высшее 2010 в Петербурге"
]
for soch in sochetanie:
for strin in stringi:
if soch in strin:
print("НАШЁЁЁЁЁЁЁЁЁЁЛ!!!!!!!!!!!")
во-первых проблема в if "высшее": - если в строке нашлось это слово, то в следующий elif "неоконченное" and "высшее": вы уже не попадёте - это условие уже не будет проверяться, поэтоу мужно менять их местами. Та же ситуация и с "среднее специальное".
К тому же как уж говорили: если i у вас, например, содержит "неоконченное", то не может содержать "высшее", т.к. это одна переменая.
Вот такой варик есть:
def detect_education(arg):
words = arg.lower()
words = words.split(" ")
words = words[:2]
high_edu = "высшее"
middle_edu = "среднее"
special_edu = "специальное"
unfinished_edu = "неоконченное"
if unfinished_edu in words:
if high_edu in words:
return unfinished_edu + " " + high_edu
elif middle_edu in words:
if special_edu in words:
return unfinished_edu + " " + middle_edu + " " + special_edu
return unfinished_edu + " " + middle_edu
else:
if high_edu in words:
return high_edu
elif middle_edu in words:
if special_edu in words:
return middle_edu + " " + special_edu
return middle_edu