как разделить строку для создания вложенного списка? - PullRequest
0 голосов
/ 07 октября 2011

Как бы вы разбили строку как

'1,55,6,89,2|7,29,44,5,8|767,822,999'

на двух разделителях ',' и '|', так что у вас есть список со значениями, такими как:

[[1, 55, 6, 89, 2], [7, 29, 44, 5, 8], [767, 822, 999]]

Ответы [ 4 ]

6 голосов
/ 07 октября 2011

Понимание списка - самый краткий способ достигнуть этого.

>>> s = '1,55,6,89,2|7,29,44,5,8|767,822,999'
>>> [[int(x) for x in ss.split(',')] for ss in s.split('|')]
[[1, 55, 6, 89, 2], [7, 29, 44, 5, 8], [767, 822, 999]]
0 голосов
/ 07 октября 2011
my_data = [map(int, line.split(',')) for line in input_string.split('|')]
0 голосов
/ 07 октября 2011
import re


regx = re.compile('(\A)|(\|)|(\Z)')

def repl(mat, di = {1:'[[', 2:'],[', 3:']]'} ):
    return di[mat.lastindex]

ss = '1,55,6,89,2|7,29,44,5,8|767,822,999'

my_data = eval( regx.sub(repl,ss) )

print my_data[1]
print my_data[1][2]

результат

[7, 29, 44, 5, 8]
44

Я знаю: некоторые будут кричать, что не используют eval ()

Редактировать

ss = '1,55,6,89,2|7,29,44,5,8|767,822,999' 
my_data = eval( ss.replace('|','],[').join(('[[',']]')))
0 голосов
/ 07 октября 2011
my_data = [x.split(',') for x in input_string.split('|')]
...