首页 > 解决方案 > 如果大写字母前后有一个小写字母,则插入空格 - Python

问题描述

如果空格包含大写字母(但不是第一个字母),有没有办法插入空格?

例如,给定"RegularExpression"我想获得"Regular Expression"

我尝试了以下正则表达式:

re.sub("[a-z]{1}[A-Z][a-z]{1}", " ","regularExpression") 

不幸的是,这会删除匹配模式:

regula pression

我更喜欢正则表达式解决方案,但会感谢任何可行的解决方案。谢谢!

标签: pythonregexstringnlp

解决方案


In [1]: s = 'RegularExpression'

In [2]: answer = []

In [3]: breaks = [i for i,char in enumerate(s) if char.isupper()]

In [4]: breaks = breaks[1:]

In [5]: answer.append(s[:breaks[0]])

In [6]: for start,end in zip(breaks, breaks[1:]):
   ...:     answer.append(s[start:end])
   ...:

In [7]: answer.append(s[breaks[-1]:])

In [8]: answer
Out[8]: ['Regular', 'Expression']

In [9]: print(' '.join(answer))
Regular Expression

推荐阅读