2010-01-19 3 views
13

Все,разбить строку в Python

У меня есть строка в Python сказать a="Show details1\nShow details2\nShow details3\nShow details4\nShow details5\n"

Как мы расколоть выше с разделителем \n (символ новой строки).

Результат должен быть ['Show details1', 'Show details2', ..., 'Show details5']

+1

вы хотите, чтобы он [ "шоу", «details1 "," показать "," details2 ", ...] или [" show details1 "," show details2 ", ...] –

+0

Это буквально \ n, или это символ новой строки? – ezod

+0

@ezod: '\ n' является символом новой строки – SilentGhost

ответ

15

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

a.rstrip().split('\n') 

Престола, str.lstrip() и str.strip() для вариаций.

Если вы более общо обеспокоены лишними символами новой строки, продуцирующих пустые элементы, вы можете сделать:

filter(None, a.split('\n')) 
+0

Спасибо, это то, что я искал ........................... – Hulk

+0

Спасибо @ddaa. Это очень помогло –

0

попробовать:

a.split('\n') 
+0

Это не работает. Я получаю результат как ['Show details', 'Show details', ''] 1 еще элемент – Hulk

+0

Итак, игнорируйте последний элемент? У вашей строки ввода есть пустая строка после последнего \ n. – Ken

20

Использование a.splitlines(). Это вернет вам список отдельных строк. Чтобы получить результат «должно быть», добавьте " ".join(a.splitlines()), и, чтобы получить все в нижнем регистре, как показано на рисунке, вся enchilada выглядит как " ".join(a.splitlines()).lower().

+0

из любопытства, насколько плохо это исполнение мудро? –

+0

Paul, я проиндексировал информацию из комментария OP к другому ответу. Он, похоже, не хочет «присоединиться» к этой части ... –

+0

@ Идан, это очень быстро. На моей машине он разбивает строку 10MB 'test this \ n' * int (1e6) 'в 280 мс или 28 нс на символ. У вас есть проблема с производительностью, связанная с этой функцией? –

1
a.split('\n') 

возвратит пустую запись в качестве последнего члена list.so использовать

a.split('\n')[:-1]

Смежные вопросы