Как удалить URL из текста при помощи Python

Чтобы удалить URL из текста, используйте метод re.sub(). Он удалит все URL из строки, заменив их пустыми строками.

import re

my_string = """
First https://bobbyhadz.com
https://google.com Second
Third https://bobbyhadz.com
"""

result = re.sub(r'http\S+', '', my_string, flags=re.MULTILINE)

# First
#  Second
# Third
print(result)
Вид приведенного выше кода и его вывода в редакторе

Метод re.sub() возвращает новую строку, полученную путем замены всех вхождений шаблона на указанную строку.

import re


my_str = '1apple, 2apple, 3banana'

result = re.sub(r'[0-9]', '_', my_str)

print(result)  # 👉️ _apple, _apple, _banana

Если шаблон не найден, строка возвращается как есть.

Мы использовали пустую строку для замены, потому что хотим удалить все URL из строки.

import re

my_string = """
First https://bobbyhadz.com
https://google.com Second
Third https://bobbyhadz.com
"""

result = re.sub(r'http\S+', '', my_string, flags=re.MULTILINE)

# First
#  Second
# Third
print(result)

Первый аргумент, который мы передали методу re.sub(), – это регулярное выражение.

Символы http в регулярном выражении – те символы, на которые мы опираемся при поиске URL.

\S соответствует любому непробельному символу. Обратите внимание, что S – заглавная.

Плюс + означает, что предыдущий символ может встречаться один или более раз. В нашем случае «предыдущий» – это любой непробельный символ.

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

Более конкретное регулярное выражение для поиска URL

Если вы беспокоитесь, что с шаблоном совпадут строки типа http-something, измените регулярное выражение на r'https?://\S+'.

import re

my_string = """
First https://bobbyhadz.com
https://google.com Second
Third https://bobbyhadz.com
"""

result = re.sub(r'https?://\S+', '', my_string)

# First
#  Second
# Third
print(result)
Вид приведенного выше кода и его вывода в редакторе

Вопросительный знак ? означает 0 или 1 вхождение предшествующего символа. Например, https? будет соответствовать либо https, либо http.

Далее идут двоеточие и две прямые косые черты :// для завершения протокола.

В целом регулярное выражение соответствует подстрокам, начинающимся с http:// или https://, за которыми следует один или более непробельных символов.

Если вам понадобится помощь в чтении или написании регулярного выражения, обратитесь к подразделу “Синтаксис регулярных выражений” в официальной документации. На этой странице вы найдете список всех специальных символов и множество полезных примеров.

Удаление URL-адресов из текста с помощью re.findall()

Для удаления URL-адресов из строки также можно использовать метод re.findall().

import re

my_string = """
First https://bobbyhadz.com
https://google.com Second
Third https://bobbyhadz.com
"""

new_string = my_string

matches = re.findall(r'http\S+', my_string)
print(matches)

for match in matches:
    new_string = new_string.replace(match, '')

# First
#  Second
# Third
print(new_string)
Вид приведенного выше кода и его вывода в редакторе

Метод re.findall принимает в качестве аргументов шаблон и строку и возвращает список строк, содержащий все неперекрывающиеся совпадения шаблона в строке.

Мы использовали цикл for для итерации по списку совпадений.

На каждой итерации мы используем метод str.replace для удаления текущего совпадения из URL.

Вы можете использовать этот подход, если хотите сохранить некоторые URL в тексте на основе условия.

Вот пример:

import re

my_string = """
First https://bobbyhadz.com
https://google.com Second
Third https://bobbyhadz.com
"""

new_string = my_string

matches = re.findall(r'http\S+', my_string)
print(matches)

for match in matches:
    if 'google' not in match:
        new_string = new_string.replace(match, '')

# First
# https://google.com Second
# Third
print(new_string)

На каждой итерации цикла for мы проверяем, что текущее совпадение не содержит строку google. Если условие выполняется, URL удаляется.

Перевод статьи «How to Remove URLs from Text in Python».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *