2016-08-27 7 views
7

Ich erstelle ein sehr rudimentäres "Adressbuch" -Programm in Python. Ich packte Kontaktdaten aus einer CSV-Datei, deren Inhalt wie das folgende Beispiel aussehen:Formatierung der Ausgabe der CSV-Datei in 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] 

Ich versuche, die Ausgabe zu formatieren, so dass es sauberer und besser lesbar aussieht, also alles, was in Reihen aufgestellt und Spalten, wie folgt aus:

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

Meine aktuellen Code ist wie folgt:

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

die natürlich wegen des Mangels an Formatierung, dies erzeugt, die nach wie vor sehr unsauber aussieht.

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

Irgendwelche Tipps, wie eine saubere Ausgabe zu erzeugen, wäre sehr dankbar, da ich Anfänger bin und ich finde das alles sehr verwirrend. Vielen Dank im Voraus.

Antwort

6

Sie könnten format verwenden, um Ihre Ausgabe zu rechtfertigen. Zum Beispiel

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

Ausgang:

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] 

können Sie mehr über format here lesen. Das Symbol < linksbündig richtet den Text aus, und die Zahl gibt die Breite der Zeichenfolge an. Jedes {} kann ein Positionsargument vor dem Doppelpunkt enthalten : - wenn sie weggelassen werden, werden die Zeichenfolgen in der Reihenfolge der Argumente in der entpackten Liste row angezeigt.

+1

Vielen Dank für die Informationen und den Link. – shaneybrainy13

+0

@zarak Ich habe versucht, Ihre Lösung, aber ich bekomme immer IndexError: Tupel Index außerhalb des Bereichs irgendwelche Ideen für eine Lösung? – Vash

+0

Hallo @Vash, führen Sie den Code auf dem hier gezeigten Beispiel? – zarak