Отфильтруйте несколько слов в Python и верните только те строки, которые не содержат этих совпадений.

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

У меня есть следующие фразы:

TEST: NONE To test SGI:TATA-142 and TATA-453. 
TEST: TATA-432 Other test. In TATA-343 too. 
TEST:NONE New test. First TATA-12
modelos incompletos.
archivos estaticos creados.

, и я хочу фильтровать по «NONE», «too» и «models», то есть я должен отображать только:

archivos estáticos creados.

Для этого я подумал о методе, который получает эти фразы и что слова, которые я хочу отфильтровать, хранятся в списке:

def clean(frases):
    lista = ["NONE", "too", "modelos"]

    for value in lista:
        if value in frases:
            pass

        else:
            return frases

Это смутное представление о том, кто я Это происходило в некоторых попытках, так как я пытался, единственное, чего я добиваюсь, это то, что я не возвращаю предложение с последним словом, сохраненным в списке, то есть слово моделирует «модели», визуализирующие:

TEST: NONE To test SGI:TATA-142 and TATA-453. 
TEST: TATA-432 Other test. In TATA-343 too. 
TEST:NONE New test. First TATA-12
archivos estaticos creados.

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

0
задан 23.11.2019, 20:26
2 ответа

Завись немного cГіmo считай хранившимися фразы, предполагая, что у тебя были они в списке podrГ, - чтобы стоить тебе следующее, как я это поместил, если бы у тебя это был другой формы tendrГ-туз, который был должен приспосабливать это немного.

ты Можешь использовать not in, который делает противоположность, что in и all(), asГ - когда все 'не estГ©n' они incluirГЎ в твоем результате:

frases = ['TEST: NONE To test SGI:TATA-142 and TATA-453.',
          'TEST: TATA-432 Other test. In TATA-343 too.',
          'TEST:NONE New test. First TATA-12',
          'modelos incompletos.',
          'archivos estaticos creados.']

lista = ["NONE", "too", "modelos"]


def clean(frases):
    return [frase for frase in frases if all(map(lambda x:x not in frase, lista))]

print(clean(frases))

Это ты devolverГ - в только ['archivos estaticos creados.']

0
ответ дан 23.11.2019, 22:53
  • 1
    Привет, фразы прибывают ко мне как цепи текста, одна вслед за другой, не, если я заставляю понимать себя, но твой пример я - много помощи, чтобы организовывать мой có я говорю. Большое спасибо. – Gustavo Adolfo Rodriguez 23.11.2019, 23:28

У тебя есть несколько ошибок lГіgicos в планировании, по двум причинам:

  1. ты не строишь никогда новый список с "правильной" стоимостью, но ты funciГіn он возвращает frases, который является тем же списком, который ты получил. Так что никогда eliminarГЎ ничто (я не объясняюсь cГіmo не состоит в том, что ты говоришь, что в результате eliminГі фраза)
  2. , Чтобы смотреть, слово estГЎ в какой-то из фраз помещаешь ли ты: if value in frases но это не funcionarГЎ как ожидание. Это sГіlo смотрит, если value (что serГЎ например слово "NONE" - один из элементов списка frases, но не это serГЎ, так как этот список содержит длинные цепи. Ни одной из этих цепей нет "NONE", хотя он может содержать "NONE".

    Окончательно, что tendrГ-эксперт, который нужно повторять для каждой фразы и взгляда, если слово estГЎ в этой фразе, с чем-то как:

    for value in lista:
        for frase in frases:
            if value in frase:
                ...
    
  3. то, что ты должен делать в случае, если он будет выполнен, состоит в том, чтобы отпускать тебе эту фразу (hacГ-схвати это хорошо), но в случае, если не будет выполнен дебет aГ±adir эта фраза в другой список, чем contendrГЎ результат, который было нужно возвращать. И не возвращать ничего aГєn. return estarГЎ вне этих циклов.

  4. В действительности предыдущее также serГ - в правильный, так как ВїquГ© не перемещает, если слово "NONE" estГЎ во фразе, но слове "too" не estГЎ? Так как мы повторяем из-за values, если мы находим, что один из values не estГЎ во фразе, мы считаем ее хорошей. Но mГЎs вперед podrГ-хозяева находить (в другой iteraciГіn) что другое слово sГ - что estГЎ, из-за того, что не tendrГ-хозяева, чем счесть ее хорошей раньше.

    soluciГіn в это состоит, во-первых, в том, чтобы вкладывать циклы. Повторять раньше из-за фраз. И для каждой фразы решать, сохраняем ли мы ее или не смотря, какая-то появляется ли из слов в ней. SГіlo, если ни одна не появляется, будь должен сохраняться.

А именно, беря ту же идею, что pretendГ-схвати выражать в тебе cГіdigo, но исправляя эти проблемы, serГ - в asГ-:

def clean(frases):
    lista = ["NONE", "too", "modelos"]
    resultado = []

    for frase in frases:
        conservar = True
        for palabra in lista:
            if palabra in frase:
                conservar = False
        if conservar:
            resultado.append(frase)
    return resultado

Предыдущее serГ - в одну versiГіn "простой", что использует только циклы и caracterГ-sticas хорошо известные языка. Используя programaciГіn функционально смоги быть упрощенным много, как он показывает ответ AdriГЎn Санс.

0
ответ дан 23.11.2019, 22:53
  • 1
    Привет, я понимаю, что ты хочешь сказать меня, правда, если я являлся слишком потерянным, и как я упомянул в publicació n, это была неопределенная идея о том, что querí чтобы делать, но уже я понимаю лучше, как находить solució n оптимальнее. Большое спасибо из-за Вашей помощи. – Gustavo Adolfo Rodriguez 23.11.2019, 23:27