2013-03-22 41 views
12

Tôi có danh sách các bộ dữ liệu được sắp xếp theo giá trị. Họ đang ở dạng (name,count) trong đó số là số lần xuất hiện cho mỗi tên duy nhất.Lưu danh sách các bộ dữ liệu đã đặt hàng dưới dạng CSV

Tôi muốn lấy danh sách này và chuyển đổi nó thành CSV trong đó mỗi tên là tiêu đề cột và mỗi giá trị là giá trị cột của một hàng.

Bất kỳ đề xuất nào về cách thực hiện? Cảm ơn.

+0

Vui lòng chỉnh sửa bài đăng của bạn để bao gồm nỗ lực của bạn vào giải pháp. Folks sẽ chỉ cho bạn đi đúng hướng. Gợi ý: có một tham số ở mô-đun 'csv' trong thư viện chuẩn. – bernie

+1

Chỉ cần viết một chuỗi 'output + = myTuple [0] + ',' + myTuple [1] + '\ n'' trong vòng lặp for. Khi vòng lặp được thực hiện, ghi 'output' vào một tệp' * .csv'. –

+0

chỉ cần 'nhập csv' và đọc tài liệu mô-đun, rất đơn giản. http://docs.python.org/2/library/csv.html –

Trả lời

36

Bạn có thể làm điều này:

import csv 

data=[('smith, bob',2),('carol',3),('ted',4),('alice',5)] 

with open('ur file.csv','wb') as out: 
    csv_out=csv.writer(out) 
    csv_out.writerow(['name','num']) 
    for row in data: 
     csv_out.writerow(row) 

đầu ra tệp sẽ có:

name,num 
"smith, bob",2 
carol,3 
ted,4 
alice,5 
+0

Khá bất thường, writerow() đặt dấu ngoặc kép xung quanh MỘT SỐ chỉ trong chuỗi. Dữ liệu thô của tôi không có dấu ngoặc kép. Có gì không? –

+0

Nếu bạn đang sử dụng Windows, hãy mở tệp có chế độ 'wb' để tránh nhận một dòng trống giữa mỗi hàng trong đầu ra. – rleelr

+0

Trong Python 3, sử dụng chế độ "w" thay vì "wb", để tránh bị lỗi TypeError. Bạn có thể chuyển 'newline = ''', sẽ xử lý các dòng trống dư thừa. – Tomty

0

đơn giản tìm kiếm google (Bạn đã không sử dụng mũi của Google):

Python, transposing a list and writing to a CSV file:

import csv 
lol = [(1,2,3),(4,5,6),(7,8,9)] 
item_length = len(lol[0]) 

with open('test.csv', 'wb') as test_file: 
    file_writer = csv.writer(test_file) 
    for i in range(item_length): 
    file_writer.writerow([x[i] for x in lol]) 

đầu ra

1,4,7 
2,5,8 
3,6,9 
Các vấn đề liên quan