例如,取输入字符串Street42/53
。我想将它分成数字运行,所以我得到['Street', '42, '/', '53']
。我尝试了一个正则表达式,但问题是像(?<=\d)(?!=\d)
这样的表达式没有匹配的实际字符。所以我尝试用不常见的角色替换匹配并在其上拆分。
import re
delimiter = re.compile(r'(?<=\d)(?!=\d)')
re.sub('Street42/53', '\f').split('\f')
但是,这只返回两个空字符串的列表。如何在Python中拆分数字?为了澄清,只要数字位于非数字旁边,但只是数字或只是非数字的内部运行,就会发生拆分。
答案 0 :(得分:9)
你可以简单地说:
re.split(r'(\d+)', your_string)
>>> test = 'street43/23hello243world'
>>> re.split(r'(\d+)', test)
['street', '43', '/', '23', 'hello', '243', 'world']
答案 1 :(得分:2)
您可以使用regex
module。
x = "Street42/53"
print regex.split(r"(?<=\d)(?=\D)|(?<=\D)(?=\d)", x, flags=regex.VERSION1)
python re
模块不支持在0 width assertions
上拆分,但regex
模块支持拆分。
答案 2 :(得分:0)
由于Python的re.split
并未在零长度匹配上进行拆分,因此这是一种解决方法,同时使用零长度外观:
import re
re.sub(r'(?<=\D)(?=\d)|(?<=\d)(?=\D)', '\0', 'Street42/53').split('\0');
//=> ['Street', '42', '/', '53']