如何删除python字符串中包含子字符串的单词?

时间:2014-04-08 03:24:00

标签: python

由于我正在使用Twitter API,我得到了几个包含链接的字符串(推文),这就是它与'http://'一起开始的子字符串。

我怎样才能摆脱这样的链接,就是这样,我想删除整个单词

让我说我有:

'Mi grupo favorito de CRIMINALISTICA. Ultima clase de cuatrimestre http://t.co/Ad2oWDNd4u'

我想获得:

'Mi grupo favorito de CRIMINALISTICA. Ultima clase de cuatrimestre'

此类子串可能出现在字符串

的任何位置

2 个答案:

答案 0 :(得分:4)

您可以使用re.sub()将所有链接替换为空字符串:

>>> import re
>>> pattern = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
>>> s = 'Mi grupo favorito de CRIMINALISTICA. Ultima clase de cuatrimestre http://t.co/Ad2oWDNd4u'
>>> pattern.sub('', s)
'Mi grupo favorito de CRIMINALISTICA. Ultima clase de cuatrimestre '

它取代了字符串中任何位置的所有链接:

>>> s = "I've used google https://google.com and found a regular expression pattern to find links here https://stackoverflow.com/questions/6883049/regex-to-find-urls-in-string-in-python"
>>> pattern.sub('', s)
"I've used google  and found a regular expression pattern to find links here "                                                                                                                                            

正则表达式取自此主题:

答案 1 :(得分:0)

你可以这样做:

s[:s.index('http://')-1]

如果它不总是出现在最后,你可以这样做:

your_list = s.split()
i = 0
while i < len(your_list):
    if your_list[i].startswith('http://'):
        del your_list[i]
    else:
        i+=1
s = ' '.join(your_list)