【问题标题】:Python Split StringPython拆分字符串
【发布时间】:2010-09-30 23:57:43
【问题描述】:

假设我们有Zaptoit:685158:zaptoit@hotmail.com

怎么拆分所以只剩下685158:zaptoit@hotmail.com

【问题讨论】:

    标签: python regex parsing split


    【解决方案1】:

    以下拆分字符串,忽略第一个元素并重新加入其余元素:

    ":".join(x.split(":")[1:])
    

    输出:

    '685158:zaptoit@hotmail.com'
    

    【讨论】:

      【解决方案2】:

      使用 str.split() 方法,maxsplit 参数的值为 1。

      mailID = 'Zaptoit:685158:zaptoit@hotmail.com' 
      mailID.split(':', 1)[1]
      

      希望对您有所帮助。

      【讨论】:

        【解决方案3】:

        从 Python 2.5 开始,有一个更直接的解决方案。如果没有找到分隔符,它会很好地降级:

        >>> s = 'Zaptoit:685158:zaptoit@hotmail.com'
        >>> s.partition(':')
        ('Zaptoit', ':', '685158:zaptoit@hotmail.com')
        
        >>> s.partition(':')[2]
        '685158:zaptoit@hotmail.com'
        
        >>> s.partition(';')
        ('Zaptoit:685158:zaptoit@hotmail.com', '', '')
        

        【讨论】:

        • 这正是我想要的。我知道split(),但之前没有遇到过partition()。谢谢!
        【解决方案4】:
        >>> s = 'Zaptoit:685158:zaptoit@hotmail.com'
        >>> s.split( ':', 1 )[1]
        '685158:zaptoit@hotmail.com'
        

        【讨论】:

        • 请注意,使用变量名“str”并不是一个好习惯,因为 str() 是一个内置函数。
        【解决方案5】:

        另一种方法,不使用split:

        s = 'Zaptoit:685158:zaptoit@hotmail.com'
        s[s.find(':')+1:]
        

        例如:

        >>> s = 'Zaptoit:685158:zaptoit@hotmail.com'
        >>> s[s.find(':')+1:]
        '685158:zaptoit@hotmail.com'
        

        【讨论】:

          【解决方案6】:
          s = re.sub('^.*?:', '', s)
          

          【讨论】:

          • @PEZ:最好在第一个“:”而不是最后一个停止比赛
          • @orip:我认为你错了——问号使它成为一个非贪婪匹配,它会按预期在第一个冒号处停止
          • 是的,我认为尼克有别的意思。
          • 在这种情况下没关系,但一般来说,如果您可以在否定字符类和不情愿量词(例如,'.*?')之间进行选择,char 类往往是速度更快,内存占用更少,最重要的是,更可预测。
          • 抱歉,忘记在 for 循环外编译正则表达式。这样做时,否定字符类版本花费的时间减少了 34%。我还尝试用 cython 编译代码,静态声明 int:s 和 double:s (这应该会减少开销)。然后时间减少了 40%,因此否定字符类显然更快。
          【解决方案7】:

          另一种解决方案:

          s = 'Zaptoit:685158:zaptoit@hotmail.com'
          s.split(':', 1)[1]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多