2015-01-04 3 views
-3

Я чувствую себя глупо, задавая такой вопрос, но я не могу заставить его работать. Я сделал тривиальное регулярное выражение для разделения строк в следующем формате:Split on regex Python

(15,20) (17,30) (40 , 25) 

я добровольно пусть случайные пробелы, потому что он является законным в формате. Мое регулярное выражение довольно просто: [^0-9-]+, и works fine. Я достаточно хорошо знаком с регулярными выражениями в Java и Scala, поэтому я сначала проверил doc of Python, чтобы увидеть различия, и кажется, что это регулярное выражение является правильным, хотя оно может быть короче.

Тем не менее, он ничего не разделяет.

Код:

"(15,20) (17,30) (40 , 25)".split("[^0-9-]+") 

Выход:

['(15,20) (17,30) (40 , 25)'] 

Любая идея, почему такое простое регулярное выражение не работает?

+0

Пожалуйста, включите ваш код. Образец работает - если вы используете его правильно. –

+0

Да, я не использую его так же, я ожидал, что метод split на str будет работать так же, как на других языках, которые я знаю. – Dici

ответ

4

Вы - , не используя метод регулярного выражения. Используйте re module; re.split() function делает то, что вы хотите просто отлично:

>>> import re 
>>> re.split(r'[^0-9]+', '(15,20) (17,30) (40 , 25)') 
['', '15', '20', '17', '30', '40', '25', ''] 

str.split() method не принимает регулярное выражение.

+1

@ Dici: регулярные выражения обрабатываются выделенным модулем, поэтому его можно поддерживать обновленным в отдельности. Проверяется [новая версия] (https://pypi.python.org/pypi/regex). Не весь код нуждается в дополнительном весе обработки регулярных выражений. –

+0

Это прекрасное объяснение, спасибо – Dici