【问题标题】:Splitting on group of capital letters in python在python中拆分大写字母组
【发布时间】:2023-03-20 09:52:02
【问题描述】:

我正在尝试使用大写字母作为分隔符来标记多个字符串。我已经登陆了以下代码:

token = ([a for a in re.split(r'([A-Z][a-z]*)', "ABCowDog") if a])

print token

正如预期的那样,我得到了这个作为回报:

['A', 'B', '牛', '狗']

现在,这只是一个让生活更轻松的示例字符串,但在我的情况下,我想通过这个列表找到单个字符(通过检查 len() 很容易)并将单个字母放在一起,只要它们满足先前的定义。在上面的示例中,字符串“AB”、“Cow”和“Dog”是我真正想要形成的字符串(连续的大写字母是首字母缩写词的一部分)。无论出于何种原因,一旦我有了我的令牌,我就无法弄清楚如何在名单上走。抱歉,如果这是一个简单的答案,但我对 python 还很陌生,并且厌倦了用头撞墙。

【问题讨论】:

    标签: python regex string


    【解决方案1】:

    re.split 并不总是易于使用,而且在许多情况下有时会受到限制。您可以使用re.findall 尝试不同的方法:

    >>> s = 'ABCowDog'
    >>> re.findall(r'[A-Z](?:[A-Z]*(?![a-z])|[a-z]*)', s)
    ['AB', 'Cow', 'Dog']
    

    【讨论】:

      【解决方案2】:

      您可以使用以下内容与regex module进行拆分:

      (?=[A-Z][a-z])
      

      DEMO

      代码:

      regex.split(r'(?=[A-Z][a-z])', "ABCowDog",flags=regex.VERSION1)
      

      【讨论】:

      • re.split 不会在 0 width assertions 上拆分。请改用 regex 模块
      【解决方案3】:
      ([A-Z][a-z]+)
      

      你应该以此分开。

      【讨论】:

        猜你喜欢
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        • 2015-01-06
        • 1970-01-01
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多