2012-06-25 2 views
3

У меня есть строка, построенная из нескольких сегментов, которые не разделены, но не перекрываются. Это выглядит следующим образом:Как разбить строку на сегменты в python

<python><regex><split> 

Я хотел бы разделить на на:

<python>, <regex>, <split> 

Я ищу наиболее эффективным способом, чтобы сделать это, и в то же время с минимальным кодом, как возможное. Я мог бы изменить «>» на «>» и т. Д., Но я не хочу делать лишние операции. Можно ли использовать регулярное выражение для этого?

ответ

7

Попробуйте re.findall:

import re 
your_string = '<python><regex><split>' 
parts = re.findall(r'<.+?>', your_string) 
print parts # ['<python>', '<regex>', '<split>'] 
+0

Это необходимая мне функция –

1

Если ваши входные данные действительно такие простые, вы можете просто использовать метод .replace(), встроенный в строки.

>>> '<python><regex><split>'.replace('><', '>, <') 
'<python>, <regex>, <split>' 

Если это сложнее, вы должны дать лучший пример ввода/ожидаемого вывода.

+0

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

+0

А, я не понял ваш вопрос. Вы хотите, чтобы результат был списком или похожим, который содержит каждый из элементов, которые вы ищете? –

2
>>> re.sub(r'<(.+?)>',r'<\1>,','<python><regex><split>')[:-1] 
'<python>,<regex>,<split>' 
Смежные вопросы