我很难将连续的字符串分成更合理的部分:
例如,“MarieMüller”应该变成“Marie Müller”
到目前为止,我使用了这个方法,如果没有特殊字符出现:
' '.join([a for a in re.split(ur'([A-Z][a-z]+)', ''.join(entity)) if a])
此输出用于“TinaTurner”->;“Tina Turner”,但不起作用 对于“MarieMüller”,它输出:“MarieMüller”->;“Marie M\utf8 ller”
现在我使用regex来accros\p{L}:
^{pr2}$但这会产生一些奇怪的东西,比如: “JenniferLawrence”—>;“Jennifer L awrence”
谁能帮帮我吗?在
如果您使用Unicode并需要使用Unicode类别,则应该考虑使用PyPi regex module。在这里,您可以支持所有Unicode类别:
^{1}$在这里,
(?<=\p{Ll})(?=\p{Lu})
正则表达式查找小写(\p{Ll}
)和大写(\p{Lu}
)字母之间的所有位置,然后regex.sub
在那里插入一个空格。注意,如果模式是Unicode字符串(u
-前缀),regex模块会自动编译带有regex.UNICODE
标志的正则表达式。在它对扩展字符无效
您可以使用
^{1}$re.sub()
进行此操作。会简单得多用于处理空间
^{pr2}$处理连续大写字母案件
Ideone Demo
正则表达式分解
使用由Python的字符串操作而不是正则表达式构造的函数,应该可以:
^{1}$相关问题 更多 >
编程相关推荐