Как разбить строку (используя регулярное выражение?) В зависимости от цифры / не цифры - PullRequest
0 голосов
/ 18 ноября 2010

Я хочу разбить строку на список в Python, в зависимости от цифры / не цифры. Например,

5 55+6+  5/

должен вернуть

['5','55','+','6','+','5','/']

В данный момент у меня есть некоторый код, который просматривает символы в строке и проверяет их, используя re.match ("\ d") или ("\ D"). Мне было интересно, есть ли лучший способ сделать это.

P.S: должен быть совместим с Python 2.4

Ответы [ 4 ]

5 голосов
/ 18 ноября 2010

Предполагая, что + между 6 и 5 необходимо сопоставить (чего вам не хватает),

>>> import re
>>> s = '5 55+6+ 5/'
>>> re.findall(r'\d+|[^\d\s]+', s)
['5', '55', '+', '6', '+', '5', '/']
2 голосов
/ 18 ноября 2010

это самый простой:)

re.findall('\d+|[^\d]+','134aaaaa')
1 голос
/ 18 ноября 2010

Используйте findall или finditer:

>>> re.findall(r'\d+|[^\s\d]+', '5 55+6+ 5/')
['5', '55', '+', '6', '+', '5', '/']
0 голосов
/ 18 ноября 2010

Если порядок не имеет значения, вы можете сделать 2 разделения:

re.split('\D+', mystring)

re.split('\d+', mystring)

Однако, исходя из вашего ввода, похоже, что оно может быть математическим ... в этом случае порядок будет иметь значение. :)

Лучше всего использовать re.findall, как в одном из других ответов.

...