Je souhaite supprimer toutes les URL d'une chaîne (remplacez-les par "") J'ai fait une recherche, mais je n'ai pas trouvé ce que je voulais.
Exemple:
text1
text2
http://url.com/bla1/blah1/
text3
text4
http://url.com/bla2/blah2/
text5
text6
http://url.com/bla3/blah3/
Je veux que le résultat soit:
text1
text2
text3
text4
text5
text6
Script Python:
import re
text = re.sub(r'^https?:\/\/.*[\r\n]*', '', text, flags=re.MULTILINE)
Output:
text1
text2
text3
text4
text5
text6
Testez ce code ici .
le plus court chemin
re.sub(r'http\S+', '', stringliteral)
Cela a fonctionné pour moi:
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
Résultat:
text1
text2
text3
text4
text5
text6
Cela devrait être simple en utilisant expressions régulières . Vous pouvez les utiliser via le module re
en python.
Pour quelle expression régulière peut le mieux détecter une URL valide, vérifiez les questions suivantes SO:
Quelle est la meilleure expression régulière pour vérifier si une chaîne est une URL valide?
Quel est le moyen le plus propre d'extraire les URL d'une chaîne en utilisant Python?
Il y a beaucoup de réponses hautement votées dans ces réponses, cela devrait donc vous donner une indication.
Cette solution prend en charge http, https et les autres caractères spéciaux de type url habituels:
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"))
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)
Vous pouvez également regarder de l'autre côté ...
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]
Je n'ai pas réussi à en trouver qui traitent ma situation particulière: supprimer les {urls au milieu} _ de tweets comportant également (espaces) au milieu des urls alors j'ai créé le mien:
(https?:\/\/)(\s)*(www\.)?(\s)*((\w|\s)+\.)*([\w\-\s]+\/)*([\w\-]+)((\?)?[\w\s]*=\s*[\w\%&]*)*
voici une explication:(https?:\/\/)
correspond à http: // ou https: //(\s)*
espaces blancs facultatifs(www\.)?
correspond facultativement à www.(\s)*
correspond éventuellement à des espaces((\w|\s)+\.)*
correspond à 0 ou plus d'un ou plusieurs caractères Word suivis d'un point([\w\-\s]+\/)*
correspond à 0 ou plus d'un ou plusieurs mots (ou un tiret ou un espace) suivi de '\'([\w\-]+)
tout chemin restant à la fin de l'URL suivi d'une fin facultative((\?)?[\w\s]*=\s*[\w\%&]*)*
correspond aux paramètres de la requête de fin (même avec des espaces, etc.)
testez ceci ici: https://regex101.com/r/NmVGOo/8
L'expression régulière suivante dans Python fonctionne bien pourdétecter l'URL (s)dans le texte:
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)
Sortie :
text1
text2
text3
text4
text5
text6
Je sais que cela a déjà été répondu et que c'est stupide tard, mais je pense que cela devrait être ici. C'est un regex qui correspond à n'importe quel type d'URL.
[^ ]+\.[^ ]+
Il peut être utilisé comme
re.sub('[^ ]+\.[^ ]+','',sentence)
Tout d'abord, il convient de trouver un motif dans votre fichier texte pour les URL. quand vous avez trouvé le, vous pouvez utiliser expressions régulières .
Il est possible que vous fassiez le même travail, mais reg expr rend votre travail beaucoup plus facile et digne d’être appris.
Ce que vous voulez vraiment faire est de supprimer toute chaîne commençant par http://
ou https://
, ainsi que toute combinaison de caractères non blancs. Voici comment je le résoudrais. Ma solution est très similaire à celle de @tolgayilmaz
#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)
Et le résultat de l'exécution du code ci-dessus est
>>> 'The link to this post is '