Создайте регулярное выражение для l oop, которое ищет каждую строку в списке по документу - PullRequest
0 голосов
/ 02 августа 2020

Приношу извинения за недостаток знаний, но я пытаюсь понять, как создать регулярное выражение для l oop, которое будет искать значение каждой строки в lst_a в документе. Если есть совпадения, я надеялся получить результат True/False для каждой строки.

Например:

lst_a = ['Lorem ipsum dolor sit amet', 'consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 'Ut enim ad minim veniam']
doc = doc.txt

Пример вывода:

[True False False]

Моя попытка:

import re

  lst_a = ['Lorem ipsum dolor sit amet', 'consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 'Ut enim ad minim veniam']

for i in lst_a:
    re_pattern = r'lst_a[i]'
    regex = re.compile(re_pattern)

with open('doc.txt') as doc:
    for line in doc:
        match = regex.search(line)

1 Ответ

1 голос
/ 02 августа 2020

Если вы просто ищете строку в документе, вам не нужно использовать регулярное выражение. Согласно описанию проблемы вы хотите знать, существует ли в документе строка. Тем не менее, ваш код, похоже, пытается сопоставить строку за строкой, что не то, что вам следует делать, если описание проблемы точное.

lst_a = ['Lorem ipsum dolor sit amet', 'consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 'Ut enim ad minim veniam']

with open('doc.txt') as doc:
    document_text = doc.read()
# a list comprehension:
matches = [string in document_text for string in lst_a]
"""
The above is equivalent to:
matches = []
for string in lst_a:
    # test if string occurs anywhere in document_text and return True or False
    matches.append(string in document_text)
"""

matches будет списком, например [True, False, True]

...