2009-05-22 66 views
6

Làm cách nào để thực hiện như sau trong Python 2.2 bằng cách sử dụng các mô-đun tích hợp?Chuyển đổi danh sách các danh sách thành chuỗi phân cách

Tôi có danh sách các danh sách như sau:
[['chó', 1], ['mèo', 2, 'a'], ['chuột', 3, 4], ['bat' , 5]]

Và từ đó tôi muốn tạo ra một biểu diễn chuỗi của một bảng như thế này, trong đó các cột được phân tách bởi các tab và các hàng theo dòng mới.

dog 1 
cat 2 a 
rat 3 4 
bat 5 

tức
'chó \ t1 \ ncat \ t2 \ ta \ nrat \ t3 \ t4 \ nbat \ t5'

Trả lời

19

Như thế này, có lẽ:

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

này tham gia tất cả các danh sách bên trong bằng cách sử dụng các tab và nối các danh sách chuỗi kết quả bằng cách sử dụng các dòng mới.

Sử dụng tính năng được gọi là list comprehension để xử lý danh sách bên ngoài.

+0

Bạn cần chuyển đổi các chuỗi thành chuỗi trước khi tham gia. – Dave

+0

bạn sẽ phải đảm bảo rằng mỗi phần tử trong biến 'danh sách' là một chuỗi, nhưng ngoài ra, đoạn mã rất ngắn gọn và biểu cảm. Tôi thực sự nên dành nhiều thời gian hơn với Python .... –

+0

Bạn cũng có thể thay đổi dòng thứ hai thành: result = '\ n'.join (' \ t'.join (str (el) cho el trong danh sách) để liệt kê trong danh sách) – 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 để đơn giản và dễ đọc – nosklo

Các vấn đề liên quan