Есть ли способ разбить многострочную строку в Python в список списков - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь превратить что-то вроде этой строки в несколько строк:

"яблоко, апельсин, кошка \ n, 100, 200, 300 \ n, 0.3, 0.5, 0.6 \ n"

в нечто вроде этого вложенного списка, где каждое слово \ число является элементом каждой строки, которая является элементом большего списка:

 [['apple', 'orange','cat'], 
        ['100', '200', '300'], 
        ['0.3', '0.5', '0.6']]

Я также работаю в больших масштабах, поэтому более 3 строк

Я не могу понять это самостоятельно. Пожалуйста помоги.

Я уже пытался использовать .append, list (), old old [], .split, где я разбил строки в "\n" и ",".

Ни один из них не сработал, и ближе всего я получил список отдельных чисел \ слов, но не знал, как их разбить

Ответы [ 3 ]

3 голосов
/ 12 июня 2019
lst = [ [s.strip() for s in line.split(',') if s] for line in text.split('\n') if line]
0 голосов
/ 12 июня 2019
str="your data string"

list=str.split('\n')

for i in range(len(list)):
       list[i]=list[i].split(',')

print (list)

Это более крупный и простой для понимания метод ... или вы можете перечислить понимание, как сказано @ user8426627

0 голосов
/ 12 июня 2019
>>> s = "apple, orange, cat\n, 100, 200, 300\n, 0.3, 0.5, 0.6\n"
>>> line_split = s.split('\n')
>>> line_split
['apple, orange, cat', ', 100, 200, 300', ', 0.3, 0.5, 0.6', '']
>>> word_split = [line.split(',') for line in line_split]
>>> word_split
[['apple', ' orange', ' cat'], ['', ' 100', ' 200', ' 300'], ['', ' 0.3', ' 0.5', ' 0.6'], ['']]

OR

[line.split(',') for line in s.split('\n')]  // One Liner

Вам придется очистить ненужные строки

PS

Кажется, что ваша строка является значением, разделенным запятыми (CSV). Вы могли бы использовать панды для лучшего манипулирования

>>> import pandas as pd
>>> pd.read_csv(pd.compat.StringIO(s))
     apple   orange    cat
NaN  100.0    200.0  300.0
NaN    0.3      0.5    0.6
...