我正在尝试将我的字符串拆分成一个列表,用空格和字符分隔,但将数字放在一起 例如,字符串:
"1 2 +="
最终会成为:
["1", " ", "2", " " ,"+", "="]
我目前的代码是
temp = re.findall('\d+|\S', input)
这会按预期分隔字符串,但也会删除空格,我该如何阻止它?
答案 0 :(得分:3)
只需将\s
或\s+
添加到当前正则表达式中(如果要将连续的空白字符组合在一起,请使用\s+
)。例如:
>>> s = "1 2 +="
>>> re.findall(r'\d+|\S|\s+', s)
['1', ' ', '2', ' ', '+', '=']
如果您不希望将连续的空格组合在一起,那么使用r'\d+|\S|\s'
可能更有意义而不是r'\d+|\D'
。
答案 1 :(得分:1)
您可以使用\D
查找不是数字的任何内容:
\d+|\D
<强>的Python:强>
temp = re.findall(r'\d+|\D', input)
//Output: ['1', ' ', '2', ' ', '+', '=']
如果您刚刚使用.
,它也会有用,因为无论如何它都会与\d+
匹配。但它可能更干净而不是。
\d+|.