Я пытаюсь написать фрагмент кода, который будет печатать что-то, если между двумя списками будет найдено сходство, чтобы позже я смог реализовать это в разделителе предложений. Однако мне трудно анализировать один список, чтобы увидеть, содержит ли он элементы другого списка.

Код ниже показывает, что я сейчас пробовал:

    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
-2
Sam Rezaki 2 Май 2019 в 13:58

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)
0
Ollie 2 Май 2019 в 11:12

Я думаю, вы этого хотите:

for segment in exception_1_3:
    if segment in sentence:
       print("Exception found")
0
SV-97 2 Май 2019 в 11:11

Исходя из вашего вопроса, кажется, что вы пытаетесь найти стандартный шаблон в некотором типе ввода (например, строка). Вместо использования длинного списка символов в 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)
0
Life is complex 2 Май 2019 в 13:43