Подтвердить что ты не робот

Как удалить любой URL-адрес в строке в Python

Я хочу удалить все URL внутри строки (замените их на "") Я искал, но не мог найти то, что хочу.

Пример:

text1
text2
http://url.com/bla1/blah1/
text3
text4
http://url.com/bla2/blah2/
text5
text6
http://url.com/bla3/blah3/

Я хочу, чтобы результат был:

text1
text2
text3
text4
text5
text6
4b9b3361

Ответ 1

Python script:

import re
text = re.sub(r'^https?:\/\/.*[\r\n]*', '', text, flags=re.MULTILINE)

Вывод:

text1
text2
text3
text4
text5
text6

Проверьте этот код здесь.

Ответ 2

кратчайший путь

re.sub(r'http\S+', '', stringliteral)

Ответ 3

Это сработало для меня:

import re
thestring = "text1\ntext2\nhttp://url.com/bla1/blah1/\ntext3\ntext4\nhttp://url.com/bla2/blah2/\ntext5\ntext6"

URLless_string = re.sub(r'\w+:\/{2}[\d\w-]+(\.[\d\w-]+)*(?:(?:\/[^\s/]*))*', '', thestring)
print URLless_string

Результат:

text1
text2

text3
text4

text5
text6

Ответ 4

Это должно быть простым использованием регулярных выражений. Вы можете использовать их через модуль re в python.

Для какого правильного выражения лучше всего найти правильный URL-адрес, проверьте эти SO-вопросы:

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

Ответ 5

Это решение предназначено для http, https и других обычных символов типа url:

import re
def remove_urls (vTEXT):
    vTEXT = re.sub(r'(https|http)?:\/\/(\w|\.|\/|\?|\=|\&|\%)*\b', '', vTEXT, flags=re.MULTILINE)
    return(vTEXT)


print( remove_urls("this is a test https://sdfs.sdfsdf.com/sdfsdf/sdfsdf/sd/sdfsdfs?bob=%20tree&jef=man lets see this too https://sdfsdf.fdf.com/sdf/f end"))

Ответ 6

Удаление HTTP-ссылок /URL-адресов, перепутанных в любом тексте:

import re
re.sub(r'''(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s'!()\[\]{};:'".,<>?«»""‘]))''', " ", text)

Ответ 7

Вы также можете посмотреть на него с другой стороны...

from urlparse import urlparse
[el for el in ['text1', 'FTP://somewhere.com', 'text2', 'http://blah.com:8080/foo/bar#header'] if not urlparse(el).scheme]

Ответ 8

Я не смог найти ничего, что могло бы справиться с моей конкретной ситуацией: удаление URL-адресов в середине твитов, у которых также есть пробелы в середине URL-адресов, поэтому я сделал свой собственный:

(https?:\/\/)(\s)*(www\.)?(\s)*((\w|\s)+\.)*([\w\-\s]+\/)*([\w\-]+)((\?)?[\w\s]*=\s*[\w\%&]*)*

вот объяснение:
(https?:\/\/) соответствует http://или https://
(\s)* необязательные пробелы
(www\.)? опционально соответствует www.
(\s)* опционально соответствует пробелам
((\w|\s)+\.)* соответствует 0 или более из одного или нескольких символов слова, за которыми следует точка
([\w\-\s]+\/)* соответствует 0 или более из одного или нескольких слов (или тире или пробел), за которыми следует '\'
([\w\-]+) любой оставшийся путь в конце URL, за которым следует необязательное окончание
((\?)?[\w\s]*=\s*[\w\%&]*)* соответствует конечным параметрам запроса (даже с пробелами и т.д.)

проверить это здесь: https://regex101.com/r/NmVGOo/8

Ответ 9

Следующее регулярное выражение в Python хорошо работает для обнаружения URL-адресов в тексте:

source_text = '''
text1
text2
http://url.com/bla1/blah1/
text3
text4
http://url.com/bla2/blah2/
text5
text6    '''

import re
url_reg  = r'[a-z]*[:.]+\S+'
result   = re.sub(url_reg, '', source_text)
print(result)

Выход

text1
text2

text3
text4

text5
text6

Ответ 10

Прежде всего, он должен найти шаблон в текстовом файле для URL-адресов. когда вы его нашли, вы можете использовать регулярные выражения.
Это возможно для вас, чтобы выполнить ту же работу, но reg expr делает вашу работу более легкой и также заслуживающей изучения.

Ответ 11

Я знаю, что на этот вопрос уже дан ответ, и это глупо поздно, но я думаю, что это должно быть здесь. Это регулярное выражение, которое соответствует любому виду URL.

[^ ]+\.[^ ]+

Может использоваться как

re.sub('[^ ]+\.[^ ]+','',sentence)

Ответ 12

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

#Define the text from which you want to replace the url with "".
text ='''The link to this post is https://stackoverflow.com/questions/11331982/how-to-remove-any-url-within-a-string-in-python'''

import re
re.sub('http://\S+|https://\S+', '', text)

И результат выполнения вышеуказанного кода

>>> 'The link to this post is '

Ответ 13

Регулярное выражение для URL-адреса, удаленного в PHP

<?php

    preg_match_all('/<a.*?href=".*?">(.*?)<[\/]a>/', $content,$arr);

    $new_content = str_replace($arr[0], $arr[1], $content);
    echo $new_content;
?>

URL удалить Пример