Работа с библиотекой re

FixZer

Активный
Автор темы
139
43
Всем привет! Я с толкнулся с одной проблемкой, у меня никак не получается удалить эмодзи, если оно в строке одно. В общем покажу на примере что мне нужно
Допустим у меня есть вот такой код:

Пример кода:
import re


text = """<emoji>🆕</emoji>INDICATOR - БЕСПЛАТНО<emoji>🆕</emoji>
Примеры всех позиций есть по кнопке ниже <emoji>🚩</emoji>
 решил поделится с вами индикатором который выдает сигналы с 95% отработкой абсолютно бесплатно ребята, зайдите попробуйте это просто <emoji>💯</emoji>КНОПКА БАБЛО<emoji>🔥</emoji>
Заходите, БЕСПЛАТНО ВЫДАДУТ ТОЛЬКО ПЕРВЫМ 100 ЧЕЛОВЕК <emoji>👑</emoji> дальше будет очень дорого такая находка <emoji>🥇</emoji>
<emoji>🔖</emoji>Помимо этого всего вам дадут очень много БЕСПЛАТНОГО обучающего материала📎
<emoji>✏️</emoji>Залетайте и забирайте индикатор <emoji>🆕</emoji>
<emoji>👋</emoji>"""


remove_words = ['ByBit | YouTube']


for remove_word in remove_words:
    pattern = r'\s*'.join([rf'({re.escape(word)}|<[^>]+>{re.escape(word)}</[^>]+>)' for word in remove_word.split()])
    pattern = rf'{pattern}(?:\s*<emoji.*?>.*?</emoji>)?\s*'
    text = re.sub(pattern, '', text, flags=re.IGNORECASE).strip()


text = re.sub(r'(?m)^(?:\s*<emoji>.*?</emoji>\s*)+$', '', text, flags=re.M).strip() # Строка, которая  некорректно работает


print(text)
В общем есть текст, в котором присутствует одна строка "<emoji>👋</emoji>" которую нужно удалить, так как после неё и перед ней не стоит текст.
Мучался 2 дня, решил обратиться сюда, может кто-нибудь сталкивался с такой проблемой, ну или разбирается в регулярках намного лучше чем я. А то я только начал изучать библиотеку re.
Результат должен получиться вот таким:

Результат:
<emoji>🆕</emoji>INDICATOR - БЕСПЛАТНО<emoji>🆕</emoji>

Примеры всех позиций есть по кнопке ниже <emoji>🚩</emoji>
 решил поделится с вами индикатором который выдает сигналы с 95% отработкой абсолютно бесплатно ребята, зайдите попробуйте это просто <emoji>💯</emoji>КНОПКА БАБЛО<emoji>🔥</emoji>

Заходите, БЕСПЛАТНО ВЫДАДУТ ТОЛЬКО ПЕРВЫМ 100 ЧЕЛОВЕК <emoji>👑</emoji> дальше будет очень дорого такая находка <emoji>🥇</emoji>

<emoji>🔖</emoji>Помимо этого всего вам дадут очень много БЕСПЛАТНОГО обучающего материала📎

<emoji>✏️</emoji>Залетайте и забирайте индикатор <emoji>🆕</emoji>
 
Решение
Спасибо большое, работает!
Вот только хочу спросить, а если будет допустим проскакивать вот к примеру вот так:
<emoji emoji-id='97128903098912390'>🥇</emoji>
Можно ли как то к регулярке добавить ?
Python:
filtered_text = "\n".join(line for line in text.split("\n") if not re.fullmatch(r"(<emoji(?: [^>]*)?>[^<]+?</emoji>)+", line.strip()))

FixZer

Активный
Автор темы
139
43
Python:
filtered_text = "\n".join(line for line in text.split("\n") if not re.fullmatch(r"(<emoji>[^<]+?</emoji>)+", line.strip()))
print(filtered_text)
Спасибо большое, работает!
Вот только хочу спросить, а если будет допустим проскакивать вот к примеру вот так:
<emoji emoji-id='97128903098912390'>🥇</emoji>
Можно ли как то к регулярке добавить ?
 

Fott

Простреленный
3,470
2,386
Спасибо большое, работает!
Вот только хочу спросить, а если будет допустим проскакивать вот к примеру вот так:
<emoji emoji-id='97128903098912390'>🥇</emoji>
Можно ли как то к регулярке добавить ?
Python:
filtered_text = "\n".join(line for line in text.split("\n") if not re.fullmatch(r"(<emoji(?: [^>]*)?>[^<]+?</emoji>)+", line.strip()))
 
  • Влюблен
Реакции: FixZer