2012-07-04 12 views
13

Voglio rimuovere tutti gli URL all'interno di una stringa (sostituirli con "") Ho cercato in giro ma non riuscivo a trovare veramente quello che volevo.Come rimuovere qualsiasi URL all'interno di una stringa in Python

Esempio:

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

Voglio che il risultato sia:

text1 
text2 
text3 
text4 
text5 
text6 
+7

Sei sicuro hai studiato a sufficienza? Hai provato ** espressioni regolari **? –

+1

Sì, ma non ho davvero capito come farlo nel mio esempio .. –

+3

Hai guardato http://stackoverflow.com/questions/520031/whats-the-cleanest-way-to-extract-urls-from -a-string-using-python –

risposta

33

Python script:

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

di uscita:

text1 
text2 
text3 
text4 
text5 
text6 

Verifica questo codice here.

+4

Grazie per ** solo ** risposta utile e semplice. –

7

dovrebbe essere semplice utilizzando regular expressions. Puoi usarli tramite il modulo re in python.

Per cui l'espressione regolare può meglio rilevare un URL valido, controllare questi SO domande:

Ci sono alcune risposte molto votate in queste, quindi dovresti darti qualche indicazione.

+0

Beh, l'ho già verificato prima .. Ma puoi dirmi come farlo per il mio esempio sopra? –

+3

Lo scopo di Stack Overflow non è solo quello di chiedere il codice. Se hai già controllato quella domanda, mi chiedo perché non hai ancora trovato nulla. Che cosa hai provato che ha fallito? –

1

Prima di tutto dovrebbe trovare un modello nel file di testo per gli URL. quando lo hai trovato, puoi usare regular expressions.
È possibile che tu faccia lo stesso lavoro, ma reg expr rende il tuo lavoro molto più facile e anche degno di imparare.

13

questo ha funzionato per me:

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 

Risultato:

text1 
text2 

text3 
text4 

text5 
text6 
3

Si potrebbe anche guardarlo dal contrario ...

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] 
6

Questa soluzione si rivolge per HTTP, HTTPS e gli altri normale digitare l'URL di caratteri speciali:

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")) 
+0

Questo ha funzionato per me. Grazie. – Aventinus

-3

espressioni regolari per URL rimossa in PHP

<?php 

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

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

URL remove Example

10

la via più breve

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

La seguente espressione regolare in Python funziona bene per rilevazione URL (s) nel testo:

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) 

uscita:

text1 
text2 

text3 
text4 

text5 
text6 
+1

La domanda è stata risposta 5 anni fa. Quale nuovo valore porta la tua risposta? –

+0

Questo cancellerà le righe come 'text1: text2', che non è voluto. – Toto

Problemi correlati