2016-08-27 29 views
7

我正在Python中创建一个非常基本的“地址簿”程序。我抓住从一个CSV文件导入联系人数据,这看起来像下面的示例内容:在Python中格式化CSV文件的输出

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] 

我想使它看起来更清洁,更可读的格式输出,即一切都在排,列队列,就像这样:

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

我当前的代码如下:

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

这自然是由于缺乏格式,生成此,仍然看起来非常洁净。

['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]'] 

如何产生一个干净的输出任何提示将不胜感激,因为我是初学者,我觉得这一切很混乱。提前谢谢了。

回答

6

您可以使用format左对齐您的输出。例如,

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

输出:

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] 

你可以阅读更多关于format here<符号左对齐文本,数字指定字符串的宽度。每个{}可以包含冒号前的位置参数: - 如果省略它们,字符串将按照解压缩列表row中参数的顺序出现。

+1

非常感谢您的信息和链接。 – shaneybrainy13

+0

@zarak我试过你的解决方案,但我不断收到索引错误:元组索引超出范围解决方案的任何想法? – Vash

+0

Hi @Vash,你在运行这里显示的例子的代码吗? – zarak