【问题标题】:split string python with changing indicator使用更改指示器拆分字符串 python
【发布时间】:2017-09-14 14:59:43
【问题描述】:

假设我有一个字符串。

a = '!!!!!!a1@@@@@@a2&&&&&&a3::::'

它自然地分为:a1、a2 和 a3 到

['!!!!!!','@@@@@@','&&&&&&','::::']

我想使用split 函数,例如:

>>> a.split('a*')

* 表示a 后面的字符无关紧要。有没有直接的方法可以做到这一点?

【问题讨论】:

标签: python string split


【解决方案1】:
s = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
import re

print(re.split(r'a[0-9]+', s))

【讨论】:

    【解决方案2】:

    通过使用正则表达式和模块re,您可以这样尝试:

    import re
    a = re.split(r'a\d','!!!!!!a1@@@@@@a2&&&&&&a3::::')
    

    如果您想更具体地使用拆分键,请尝试以下操作:

    a = re.split(r'a1|a2|a3','!!!!!!a1@@@@@@a2&&&&&&a3::::')
    

    并根据需要自定义条件。

    【讨论】:

      【解决方案3】:

      虽然没有@Menglong 的解决方案那么高效,但从技术上讲,您可以只使用列表和字符串操作,而不需要导入re

      >>> a = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
      >>> s = a.split('a')
      >>> s[:1] + [x[1:] for x in s[1:] if x]
      ['!!!!!!', '@@@@@@', '&&&&&&', '::::']
      

      这是有效的,因为如果您在 'a' 上拆分,则第一个段之后的每个段的第一个字符将是您要删除的 * 字符。

      这个解决方案不是可取的,只是我作为练习做的。

      【讨论】:

        猜你喜欢
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 2014-06-08
        • 1970-01-01
        • 2016-06-01
        相关资源
        最近更新 更多