【问题标题】:Split from a specific delimiter从特定分隔符拆分
【发布时间】:2011-06-11 19:03:22
【问题描述】:

如何翻录像 http://www.facebook.com/pages/create.php 这样的 URL 以获得这样的结果:www.facebook.com

我试过这种方法,但不起作用:

line.split('/', 2)[2]

我的问题可能在于那两个正斜杠 // 并且一些 URL 从 www 字符串开始。

感谢您的帮助,阿迪亚

【问题讨论】:

标签: python parsing url


【解决方案1】:

您可能想查看 Python 的 urlparse 模块。

>>> from urlparse import urlparse
>>> o = urlparse('http://www.facebook.com/pages/create.php')
>>> o.netloc
'www.facebook.com'

【讨论】:

  • 是的,最好使用适当的工具来完成常见任务。
  • 请注意,某些 URL '以 www 字符串开头'。如果缺少前导“http://”,则 urlparse 无法解析。
  • @Paul McGuire:我该怎么做才能对评论进行投票?我想投票给你的
  • @Adia :«如何翻录 URL,例如 http://www.facebook.com/pages/create.php » 和 «是的,实际上有些 URL 没有 http: // » 是矛盾的。因此,格里法顿对您的问题给出了准确的答案,对您的问题给出了错误的答案。但我不会对任何人投反对票。
  • @eyquem:对不起,如果我让任何人感到困惑。 facebook URL 只是一个示例,我正在处理的文件中有更多具有各种域和结构的 URL。无论如何,从所有帖子中,现在我知道如何解决这个问题。谢谢大家。
【解决方案2】:

可能最好的选择是从正则表达式返回服务器部分,即,

\/[a-z0-9\-\.]*[a-zA-Z0-9\-]+\.[a-z]{2,3}\/

可以涵盖 www.facebook.com、facebook.com、some-domain.tv、www.some-domain.net 等。

注意:头部和尾部斜杠是正则表达式的一部分,而不是正则表达式分隔符。

【讨论】:

    【解决方案3】:

    试试:

    line.split("//", 1)[-1].split("/", 1)[0]
    

    【讨论】:

      【解决方案4】:

      我愿意:

      ch[7 if ch[0:7]=='http://' else 0:].partition('/')[0]
      

      我不确定它是否适用于您将遇到的所有情况

      还有:

      ch[(ch[0:7]=='http://')*7:].partition('/')[0]
      

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多