2016-08-27 31 views
7

Tôi đang tạo một chương trình "Sổ địa chỉ" rất thô sơ bằng Python. Tôi lấy dữ liệu liên lạc từ một tập tin CSV, các nội dung trong đó trông giống như ví dụ sau:Định dạng đầu ra của tệp CSV bằng Python

Name,Phone,Company,Email 
Elon Musk,454-6723,SpaceX,[email protected] 
Larry Page,853-0653,Google,[email protected] 
Tim Cook,133-0419,Apple,[email protected] 
Steve Ballmer,456-7893,Developers!,[email protected] 

tôi đang cố gắng để định dạng đầu ra để nó trông sạch hơn và dễ đọc hơn, tức là tất cả mọi thứ xếp thành hàng và cột, như thế này:

Name:  Phone:  Company:  Email:   
Elon Musk 454-6723  SpaceX   [email protected] 

mã hiện tại của tôi là như sau:

f = open("contactlist.csv") 
csv_f = csv.reader(f) 
for row in csv_f: 
    print(row) 

nào một cách tự nhiên do thiếu định dạng, sản xuất này, mà vẫn trông rất ô uế.

['Name', 'Phone', 'Company', 'Email'] 
['Elon Musk', '454-6723', 'SpaceX', '[email protected]'] 
['Larry Page', '853-0653', 'Google', '[email protected]'] 
['Tim Cook', '133-0419', 'Apple', '[email protected]'] 
['Steve Ballmer', '456-7893', 'Developers!', '[email protected]'] 

Bất kỳ mẹo nào về cách tạo ra đầu ra sạch hơn sẽ được đánh giá cao vì tôi mới bắt đầu và tôi thấy tất cả điều này khá khó hiểu. Rất cám ơn trước.

Trả lời

6

Bạn có thể sử dụng format để trái biện minh cho đầu ra của mình. Ví dụ,

f = open("contactlist.csv") 
csv_f = csv.reader(f) 
for row in csv_f: 
    print('{:<15} {:<15} {:<20} {:<25}'.format(*row)) 

Output:

Name    Phone   Company    Email      
Elon Musk  454-6723   SpaceX    [email protected]   
Larry Page  853-0653   Google    [email protected]   
Tim Cook   133-0419   Apple    [email protected]   
Steve Ballmer 456-7893   Developers!   [email protected] 

Bạn có thể đọc thêm về format here. Biểu tượng < căn trái văn bản và số chỉ định chiều rộng của chuỗi. Mỗi {} có thể bao gồm một đối số vị trí trước dấu hai chấm : - nếu chúng bị bỏ qua, các chuỗi sẽ xuất hiện theo thứ tự các đối số trong danh sách được giải nén row.

+1

Rất cám ơn thông tin và liên kết. – shaneybrainy13

+0

@zarak Tôi đã thử giải pháp của bạn, nhưng tôi tiếp tục nhận được IndexError: chỉ mục tuple nằm ngoài phạm vi bất kỳ ý tưởng nào cho giải pháp? – Vash

+0

Xin chào @Vash, Bạn có đang chạy mã trên ví dụ được hiển thị ở đây không? – zarak

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