在Python中格式化CSV文件的输出

sha*_*y13 8 python csv format

我正在用Python创建一个非常基本的"地址簿"程序.我从CSV文件中获取联系人数据,其内容类似于以下示例:

Name,Phone,Company,Email
Elon Musk,454-6723,SpaceX,emusk@spacex.com
Larry Page,853-0653,Google,lpage@gmail.com
Tim Cook,133-0419,Apple,tcook@apple.com
Steve Ballmer,456-7893,Developers!,sballmer@bluescreen.com
Run Code Online (Sandbox Code Playgroud)

我正在尝试格式化输出,使其看起来更干净,更易读,即所有内容都按行和列排列,如下所示:

Name:        Phone:        Company:        Email:        
Elon Musk    454-6723      SpaceX          emusk@spacex.com
Run Code Online (Sandbox Code Playgroud)

我目前的代码如下:

f = open("contactlist.csv")
csv_f = csv.reader(f)
for row in csv_f:
    print(row)
Run Code Online (Sandbox Code Playgroud)

由于缺乏格式化,自然会产生这种情况,这看起来仍然非常不洁净.

['Name', 'Phone', 'Company', 'Email']
['Elon Musk', '454-6723', 'SpaceX', 'emusk@spacex.com']
['Larry Page', '853-0653', 'Google', 'lpage@gmail.com']
['Tim Cook', '133-0419', 'Apple', 'tcook@apple.com']
['Steve Ballmer', '456-7893', 'Developers!', 'sballmer@bluescreen.com']
Run Code Online (Sandbox Code Playgroud)

关于如何产生清洁输出的任何提示都将非常感激,因为我是初学者,我发现所有这些都令人困惑.提前谢谢了.

zar*_*rak 7

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

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

输出:

Name             Phone            Company              Email                    
Elon Musk        454-6723         SpaceX               emusk@spacex.com         
Larry Page       853-0653         Google               lpage@gmail.com          
Tim Cook         133-0419         Apple                tcook@apple.com          
Steve Ballmer    456-7893         Developers!          sballmer@bluescreen.com  
Run Code Online (Sandbox Code Playgroud)

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