2009-05-22 3 views
6

Как сделать следующее в Python 2.2 только с использованием встроенных модулей?Преобразование списка списков в строку с разделителями

У меня есть список таких списков:
[['dog', 1], ['cat', 2, 'a'], ['rat', 3, 4], ['bat' , 5]]

И из этого я хотел бы создать строковое представление таблицы, как это, где столбцы разделены вкладками и строками строк новой строки.

dog 1 
cat 2 a 
rat 3 4 
bat 5 

т.е.
'собака \ t1 \ NCAT \ t2 \ та \ nrat \ t3 \ t4 \ nbat \ t5'

ответ

19

Как это, возможно:

lists = [['dog', 1], ['cat', 2, 'a'], ['rat', 3, 4], ['bat', 5]] 
result = "\n".join("\t".join(map(str,l)) for l in lists) 

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

Для обработки внешнего списка используется функция list comprehension.

+0

Вам необходимо преобразовать ints в строки, прежде чем вы их присоедините. – Dave

+0

вам нужно убедиться, что каждый элемент в переменной «lists» является строкой, но кроме этого фрагмент кода является очень кратким и выразительным. Мне действительно нужно больше времени проводить с Python ... –

+0

Вы также можете изменить вторую строку: result = '\ n'.join (' \ t'.join (str (el) для списка el) для списка в списки) – mipadi

4
# rows contains the list of lists 
lines = [] 
for row in rows: 
    lines.append('\t'.join(map(str, row))) 
result = '\n'.join(lines) 
+0

+1, чтобы сохранить его простым и легко читаемым – nosklo