2014-11-11 3 views

ответ

4

вам не нужно regex просто использовать str.split():

>>> a="\r\nOk\r\n\r\nThanks\r\n" 
>>> a.split() 
['Ok', 'Thanks'] 

str.split([sep[, maxsplit]]): Если Сентябрь не указан или None пробегов последовательных пробелов рассматриваются как один разделитель, и результат будет не содержат пустых строк в начале или в конце, если строка имеет ведущие или конечные пробелы. Следовательно, разбиение пустой строки или строки, состоящей из просто пробела с разделителем None, возвращает []

+0

Спасибо всем! все ответы помогли! – WoW

+0

@WWW добро пожаловать! – Kasramvd

1
a = "\r\nOk\r\n\r\nThanks\r\n" 
array = a.split("\r\n") 
array = [item for item in array if item] 

Обновление: Ответ выше на Kasra проще и, следовательно, предпочтительнее.

+0

Что именно делает этот элемент [item for item in array if item] ' ? – fernandezr

+1

Он проходит через все элементы массива и создает новый массив с теми, которые не равны «". – twasbrillig

+0

'a.split()' все, что нужно –

2

Используйте | отделить разделители в выражении, а просто отфильтровать пустые строки, как вы идете:

>>> [s for s in re.split(r'\r|\n', a) if s] 
['Ok', 'Thanks'] 
+1

Кроме того, для переносимости существует [os.linesep] (https://docs.python.org/2/library/os.html#os.linesep). – sjaustirni

1

Вот простой способ. Нет необходимости упоминать любое количество \n\r или любого spaces для удаления строки. Они автоматически разделяются.

>>> a="\r\nOk\r\n\r\nThanks\r\n" 
>>> a.strip().split() 
['Ok', 'Thanks'] 
Смежные вопросы