Преобразование многострочного в список

#python #list

#python #Список

Вопрос:

Я извлек набор данных из HTML-страницы и скопировал в переменную. Переменная выглядит следующим образом

 names='''
      Apple
      Ball
      Cat'''
  

Теперь мне нравится объединять каждую строку в список, чтобы я мог получить доступ к любой строке, которую я хочу. Есть ли какой-либо способ сделать это в Python

Ответ №1:

Использование splitlines() для разделения по символу новой строки и strip() для удаления ненужных пробелов.

 >>> names='''
...       Apple
...       Ball
...       Cat'''
>>> names
'n      Applen      Balln      Cat'
>>> names_list = [y for y in (x.strip() for x in names.splitlines()) if y]
>>> # if x.strip() is used to remove empty lines
>>> names_list
['Apple', 'Ball', 'Cat']
  

Комментарии:

1. примечание: это не будет правильно разделено по строкам, если в какой-либо строке есть пробел (или другой символ пробела)

2. Я использую python 2.6.6, и в этом он отлично работал. Было бы полезно, если бы вы могли привести мне пример.

3. @wim 1 я согласен — по умолчанию split в качестве разделителя будет использоваться пробел. @topcoder: попробуйте поместить в первую строку запись с пробелом или табуляцией.

4. names_list = [x for x in (y.split() for y in names.splitlines()) if x] так вы вызываете split один раз 🙂

5. На самом деле я предпочитаю более раннюю версию, которая вызывает split дважды, она более удобочитаема, и я сомневаюсь, что это критичный к производительности код, который нуждается в микрооптимизации.

Ответ №2:

names.splitlines() должно дать вам именно это.

Комментарии:

1. Если в каждой строке действительно есть пробелы и пустая первая строка, все еще нужно выполнить постобработку.

2. Верно. Я не знаю, является ли это игнорируемым пробелом для варианта использования OP.

Ответ №3:

names.split('n') должен дать вам список, разделенный на ‘ n’

Комментарии:

1. Слабость в том, что его платформа может иметь более сложное окончание строки, чем просто 'n' .