【问题标题】:python, remove link from string [closed]python,从字符串中删除链接[关闭]
【发布时间】:2016-07-19 07:06:23
【问题描述】:

如何从这个字符串中删除链接

s=' hello how are you www.ford.com today '

所以输出是

s='hello how are you today'

【问题讨论】:

  • 您是在寻求通用解决方案还是仅针对该字符串,因为网址可能非常多样化
  • 一种可以处理www.something.com形式的任何子字符串的解决方案

标签: python string parsing filter


【解决方案1】:

这似乎是一个正则表达式替换的好情况。

>>> import re
>>> s = ' hello how are you www.ford.com today www.example.co.jp '
>>> re.sub(r'\s*(?:https?://)?www\.\S*\.[A-Za-z]{2,5}\s*', ' ', s).strip()
'hello how are you today'

上面找到任何以潜在空白开头的字符串,然后可能是https://http://,然后是www.,然后是任何非空白字符,然后是.,后跟2-5 个字母字符,然后是潜在的空白。它用单个空格替换此类字符串,然后从结果中删除前导和尾随空格。

请注意,这是一个简单的 URL 示例,由您的具体示例定义。请参阅 this answer 以获取更完整的 URL 组成定义的正则表达式。

【讨论】:

    【解决方案2】:

    虽然您当然可以使用strings 方法,但我更喜欢基于正则表达式的方法。它可以处理单词之间的空格。

    import re
    
    s = " hello www.something.com there bobby"
    s = re.sub(r'www\.\S+\.com', '',s)
    print(s) # hello  there bobby
    s = "hello www. begins and .com ends"
    s = re.sub(r'www\.\S+\.com', '',s)
    print(s) # hello www. begins and .com ends
    

    【讨论】:

    • 这在与 Gerrat 提到的我相同的条件下失败
    • @Natecat 现在应该在短语之间使用空格。
    • 如果s = "hello www. begins and .com ends",我也想打印hello there bobby,那么如何删除url链接中的单个空格。
    【解决方案3】:

    试试下面的列表推导,它省略了www._____.com模式的单词:

    ' '.join(item for item in s.split() if not (item.startswith('www.') and item.endswith('.com')) and len(item) > 7) #the len(item) is to make sure that words like www.com, which aren't real URLs, aren't removed
    

    >>> s=' hello how are you www.ford.com today '
    >>> ' '.join(item for item in s.split() if not (item.startswith('www.') and item.endswith('.com') and len(item) > 7))
    'hello how are you today'
    >>> 
    

    【讨论】:

    • 这是一个非常优雅易读的解决方案
    • @Natecat 不确定你是不是在讽刺 :)
    • 如果字符串是 s='hello how are youwww.ford.comtoday ',并且 sting 中的单词在链接之间没有空格怎么办? @A.J.
    • @abcla 我的回答解决了这个问题
    • www.com,这不是一个 URL,不会被这个删除吗?
    【解决方案4】:

    为了处理url周围没有空格的情况,可以使用这样的字符串拆分方法:

    if ".com" in s:
        s=''.join((s.split("www.")[0], " ", s.split(".com")[1]))
    

    【讨论】:

    • 你的表达在以下句子上失败:The prefix www. often starts a url, while .com ends it
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    相关资源
    最近更新 更多