Удалить вкладки из списков списка - PullRequest
0 голосов
/ 22 марта 2011

У меня есть 10 списков с четырьмя элементами, каждый из которых разделен вкладками в большом списке.Как удалить вкладки, чтобы элементы были разделены в соответствующих списках, все в большом списке?

Ответы [ 4 ]

1 голос
/ 22 марта 2011

Предоставлено на этот вопрос .Это может сработать.

>>> tabbedlist = 'element0\telement1\telement2\telement3'
>>> list = tabbedlist.split('\t')
>>> list
['element0', 'element1', 'element2', 'element3']

Это также работает для: tabbedlist = 'element0 element1 element2 element3' Где эти пробелы фактически являются вкладками или, по крайней мере, мои терминалы отображают их как пробелы.(публикация сокращает пробелы, извините)

Итак, для вашего приложения:

tenlists = [
    'l0e0\tl0e1\tl0e2',
    'l1e0\tl1e2\tl1e3\tl1e4',
    'l2e0\tl2e2',
    'l3e0\tl3e2\tl3e3\tl3e4\tl3e5',
    'l4e0\tl4e2\tl4e3\tl4e4\tl4e5\tl4e6',
    'l5e0\tl5e2\tl5e3\tl5e4\tl5e5\tl5e6\tl5e7',
]

largelist = []
for list in tenlists:
        largelist.append( list.split('\t') )

print largelist
1 голос
/ 22 марта 2011

Чтобы разделить один список, используйте понимание списка:

[x.split("\t") for x in list_with_tabbed_elements]

Теперь вам нужно сделать это для каждого элемента вашего списка списков.Вы можете использовать другое понимание списка, но лично мне не нравятся вложенные списки, поэтому я бы предложил использовать карту здесь:

map(lambda l: [x.split('\t') for x in l], list_of_lists)
1 голос
/ 22 марта 2011

Непонятно, как именно ваши исходные данные выглядят из вопроса, как есть, но, возможно, это все, что вы ищете?

data = ["alpha\tbravo\tcharlie\tdelta",
        "one\ttwo\tthree\tfour"]

new_data = map(lambda x: x.split("\t"), data)

print new_data

... который дал результат:

[['alpha', 'bravo', 'charlie', 'delta'], ['one', 'two', 'three', 'four']]
0 голосов
/ 22 марта 2011

Я не полностью понял вопрос, поэтому собираюсь сделать следующие предположения.Пожалуйста, дайте мне знать, если они верны.

Ваш ввод имеет вид:

a = [["test\tinput"], ["test1\tinput1"]] # 10 elements.

Следующий код создаст список ['test', 'input', 'test1', 'input1']

reduce(lambda x,y: x+y, [x[0].split('\t') for x in a])
...