Python RegEx帮助:将字符串拆分为数字,字符和空格

时间:2013-11-18 21:56:58

标签: python regex string list whitespace

我正在尝试将我的字符串拆分成一个列表,用空格和字符分隔,但将数字放在一起 例如,字符串:

"1 2 +="  

最终会成为:

["1", " ", "2", " " ,"+", "="]    

我目前的代码是

temp = re.findall('\d+|\S', input)  

这会按预期分隔字符串,但也会删除空格,我该如何阻止它?

2 个答案:

答案 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+|.