插入空格以分隔连接的字母和数字字符串 - Python RegEx

在 Python 中,我需要创建一个正则表达式,在任何连接的 AlphaNum 组合之间插入一个空格。例如,这就是我想要的:


8min15sec ==> 8 min 15 sec

7m12s ==> 7 m 12 s

15mi25s ==> 15 mi 25 s


我在网上找到了解决方案,但它们对我来说太复杂了,无法解析/修改。例如,我有这个:


[a-zA-Z][a-zA-Z\d]*

但它只标识第一个插入点:8Xmin15sec(X)


和这个


(?<=[a-z])(?=[A-Z0-9])|(?<=[0-9])(?=[A-Z])

但它只找到这一点:8minX15sec(X)


我可以确定使用具有完整语法的手来查找每个插入点并插入空格。



斯蒂芬大帝
浏览 274回答 3
3回答

幕布斯7119047

以下方法如何:import refor test in ['8min15sec', '7m12s', '15mi25s']:&nbsp; &nbsp; print(re.sub(r'(\d+|\D+)', r'\1 ', test).strip())&nbsp;&nbsp;这会给你:8 min 15 sec&nbsp;7 m 12 s&nbsp;15 mi 25 s

烙印99

您可以使用此正则表达式,它以任一顺序标记数字和字母边界的点,即先数字后字母,反之亦然。(?<=\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=\d)这个正则表达式(?<=\d)(?=[a-zA-Z])标记一个点,正向前瞻以寻找字母表,正向后向寻找数字。同样,(?<=[a-zA-Z])(?=\d)执行相同但顺序相反。然后只需用空格替换该标记。这是相同的示例python代码。import rearr = ['8min15sec', '7m12s', '15mi25s']for s in arr:&nbsp;print (s + ' --> ' + re.sub('(?<=\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=\d)', ' ',s))打印以下输出,8min15sec --> 8 min 15 sec7m12s --> 7 m 12 s15mi25s --> 15 mi 25 s
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python