【发布时间】:2017-08-31 10:20:32
【问题描述】:
我想将字符串拆分为数字部分和文本/符号部分 我当前的代码不包含负数或小数,并且行为怪异,在输出末尾添加了一个空列表元素
import re
mystring = 'AD%5(6ag 0.33--9.5'
newlist = re.split('([0-9]+)', mystring)
print (newlist)
当前输出:
['AD%', '5', '(', '6', 'ag ', '0', '.', '33', '--', '9', '.', '5', '']
想要的输出:
['AD%', '5', '(', '6', 'ag ', '0.33', '-', '-9.5']
【问题讨论】:
-
模式
'(-?[0-9\.]+)'为您提供所需的输出,但也会有几个空字符串 -
@ryugie 谢谢!知道为什么要添加一个空字符串吗?
-
尝试
re.split(r'(-?\d*\.?\d+)', s),并使用filter(None, result)删除空值。 -
@new_to_coding - 它添加了一个空字符串,因为您在数字上进行拆分,即使用数字作为分隔符,因此空字符串是分隔符之间的内容。这些数字显示在您的列表中只是因为您将模式包裹在括号中,因此您也捕获了分隔符。
-
@ryugie 很有趣,谢谢