Получение значений в списке на основе разделителей - PullRequest
0 голосов
/ 28 апреля 2019

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

код

import re
value_to_separate = ["prinec-how,are_you&&smile#isfine1"]

separator = ["&&smile","prinec-","#isfine1",",are_you","-how,are"]

for sep in separator:
    for val_sep in value_to_separate:
        val_sep = re.search(separator,val_sep) 
        print(val_sep)

Требуемый вывод:

["&&smile","prinec-","#isfine1",",are_you","-how,are"]

Как мне решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2019

Вам абсолютно не нужно регулярное выражение. Это действительно излишне. Используйте список-понимание:

[x for x in separator if x in value_to_separate[0]]

Код

value_to_separate = ["prinec-how,are_you&&smile#isfine1"]
separator = ["&&smile","prinec-","#isfine1",",are_you","-how,are"]

print([x for x in separator if x in value_to_separate[0]])

который выводит в требуемом формате:

['&&smile', 'prinec-', '#isfine1', ',are_you', '-how,are']
1 голос
/ 28 апреля 2019

Вы передаете список separator в re.search вместо отдельного элемента-разделителя sep.Измените re.search(separator,val_sep) на re.search(sep,val_sep) Также используйте val_sep.group(0), чтобы получить фактическую строку совпадения. Тогда ваш код изменится на.

import re
value_to_separate = ["prinec-how,are_you&&smile#isfine1"]

separator = ["&&smile","prinec-","#isfine1",",are_you","-how,are"]


for sep in separator:
    for val_sep in value_to_separate:

        val_sep = re.search(sep,val_sep)
        print(val_sep.group(0))

И вывод будет.

&&smile
prinec-
#isfine1
,are_you
-how,are
...