2013-06-27 2 views
0

Я пытаюсь разделить строку текста, которая выглядит примерно такPython Regex Строка не получает расколоть правильно

host=randomhostid123 moreinfo id=otherstuffhere version="morestuff" type=TYPEA::TYPEB 

я обвязка использовать раскол, чтобы разобрать его в

host=randomhostid123 moreinfo 
id=otherstuffhere 
version="morestuff" 
type=TYPEA::TYPEB 

сделать это я использовал

str.split('?[a-zA-Z]*=') 

, но все это производит это оригинальная строка снова Я думаю, что регулярное выражение выглядит нормально, но я новичок в python regex

+0

split не принимает регулярные выражения ... только простые строки –

+0

В качестве побочного примечания очень сложно вызвать строку 'str'. Это имя встроенного типа и функция, которую вы используете для преобразования объектов в строки. Например, вы не сможете сделать 'str (2)', чтобы получить ''2'', если вы заменили функцию на строку. – abarnert

ответ

3

Вы используете str.split(). Что вы хотите re.split:

re.split(r'\s+(?=[a-zA-Z]+=)', str) 

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

+0

Он использует 'str.split', а не' string.split'. – abarnert

+0

@abarnert приветствия, исправлены. –

0

? в вашем регулярном выражении анализируется буквально, и поскольку в вашей строке нет ?, он не разбивается. Я думаю, вы, возможно, собирались для регулярного выражения, но string.split не поддерживает регулярные выражения.


Ах, слишком долго смотрим на документацию! m.buettner подвел итоги очень хорошо.