Я пытаюсь написать фрагмент кода, который будет печатать что-то, если между двумя списками будет найдено сходство, чтобы позже я смог реализовать это в разделителе предложений. Однако мне трудно анализировать один список, чтобы увидеть, содержит ли он элементы другого списка.
Код ниже показывает, что я сейчас пробовал:
sentence= "Hello. My name is George... Michael! David Browns. alittlemouse"
exception_1_3_char = [". a", ". b", ". c", ". d", ". e", ". f", ". g", ". h", ". i", ". j", ". k", ". l", ". m", ". n", ". o", ". p", ". q", ". r", ". s", ". t", ". u", ". v", ". w", ". x", ". y", ". z"]
def exception_finder(target_sentence):
target_sentence = list(target_sentence)
for character in range(len(exception_1_3_char)):
if character in target_sentence:
print("Exception Found")
exception_finder(sentence)
Текущий результат:
Нет вывода вообще.
Желаемый результат:
Exception Found
3 ответа
Вы не хотите превращать sentence
в список, а также просто перебирать символы в exception_1_3_char
(то, что вы делали с range(len())
, перебирало 0, 1, ..., 25
).
sentence= "Hello. My name is George... Michael! David Browns. alittlemouse"
exception_1_3_char = [". a", ". b", ". c", ". d", ". e", ". f", ". g", ". h", ". i", ". j", ". k", ". l", ". m", ". n", ". o", ". p", ". q", ". r", ". s", ". t", ". u", ". v", ". w", ". x", ". y", ". z"]
def exception_finder(target_sentence):
for character in exception_1_3_char:
if character in target_sentence:
print("Exception Found")
exception_finder(sentence)
Я думаю, вы этого хотите:
for segment in exception_1_3:
if segment in sentence:
print("Exception found")
Исходя из вашего вопроса, кажется, что вы пытаетесь найти стандартный шаблон в некотором типе ввода (например, строка). Вместо использования длинного списка символов в exception_1_3_char я бы порекомендовал использовать регулярное выражение.
Этот ответ берет ваше оригинальное предложение и использует регулярное выражение для поиска шаблона (точка, за которой следуют пробелы и один символ в нижнем регистре).
import re
sentence = "Hello. My name is George... Michael! David Browns. alittlemouse"
def exception_finder(target_sentence):
exception_character_pattern = re.compile(r'\.\s[a-z]{1}')
results = exception_character_pattern.findall(target_sentence)
if results:
print("Exception Found")
# results is a list of the exception characters found
# in the target_sentence
print (results)
# outputs
['. a']
exception_finder(sentence)
Этот ответ аналогичен предыдущему, за исключением того, что я использую понимание списка, потому что вы упомянули, что ваш ввод был списком.
import re
# I turned your original string into a list and modified one of the characters.
sentence = ["Hello. my name is George... Michael! David Browns. alittlemouse"]
def exception_finder(target_list):
exception_character_pattern = re.compile(r'\.\s[a-z]{1}')
results = [match for match in (exception_character_pattern.findall(line) for line in target_list) if match]
if results:
print("Exception Found")
# results is a list of the exception characters found
# in the target_sentence
print (results)
# outputs
[['. m', '. a']]
exception_finder(sentence)
Похожие вопросы
Новые вопросы
python-3.x
По вопросам программирования Python, относящегося к версии языка 3+. Используйте более общий тег [python] для всех вопросов Python и добавляйте его только в том случае, если ваш вопрос зависит от версии. Используйте теги [python-2.x] для вопросов Python 2.