2016-11-01 1 views
0

Ich habe eine CSV-Datei.Drucken von .csv-Dateien in Python abhängig vom Jahr?

Jede Zeile enthält Daten getrennt Komma; Jede Zeile wird durch ein neues Zeilenzeichen beendet. Also in meiner Datei ist der erste Eintrag jeder Zeile ein Jahr und der zweite Eintrag in der Zeile ist der Titel eines Films.

Zum Beispiel:

1990, Tie Me Up! Tie Me Down! 

Also, es hat nur ein paar Jahre, und dann Filmtitel. Meine Frage ist, Wie drucke ich den Filmtitel, wenn es vor 1990 gemacht wurde? So etwas wie:

2015, Spongebob movie 

würde nicht drucken.

Bisher habe ich:

f = open("filmdata.csv","r",encoding="utf-8") 
for line in f: 
    entries = line.split(",") 
    if entries in f < 1990 : 
     print(line) 
f.close() 

Aber nichts ausdrucken? Aber es sagt nicht, Fehler oder irgendetwas .. Ich versuche, es in diesem Format zu halten.

+0

seit Sie ein nicht gewesen sein Mitglied von SO zu lange, hier geht es: Denken Sie daran, dass, wenn eine der Antworten Ihre Frage gelöst hat, es eine gute Übung ist, dass Sie sie als akzeptiert markieren (großes Kontrollkästchen links neben der Antwort). Es gibt Ihnen Reputationspunkte, es gibt der Person, die Zeit damit verbracht hat, Reputationspunkte zu beantworten und, am wichtigsten, es wird zukünftigen Lesern helfen zu sehen, dass die Antwort hilfreich war. Bitte werfen Sie einen Blick auf: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 (nicht nur für diesen Post, sondern auch für Ihre zukünftigen Fragen) Cheers **: -) ** – BorrajaX

Antwort

1

Obwohl die bisherigen Antworten in Ihrem generischen Fall funktionieren werden, ist es eine viel bessere Idee ist csv Modul Python zu verwenden, wenn mit einer CSV arbeiten. Es ist erweiterbarer, bietet die Möglichkeit, kompliziertere Fälle zu bearbeiten (z. B. das Entfernen von Anführungszeichen und Daten durch Kommas) und ist sehr einfach zu verwenden.

Der folgende Codeausschnitt sollte in Ihrem Fall:

import csv 

with open('filmdata.csv', 'r') as csvfile: 
    data = csv.reader(csvfile, delimiter=',', encoding='utf-8') 
    for year, movie in data: 
     if int(year) < 1990: 
      print (year, movie) 

Sie können natürlich die print ändern jedes Format zu verwenden. Wenn Sie durch Kommas trennen möchten, wird dies funktionieren:

print('{}, {}'.format(year, movie)) 
+0

Funktioniert das, wenn der Titel des Films ein Komma hat? – Gabriel

+1

@Gabriel Ja - wenn die CSV-Datei korrekt formatiert ist, z. '1950," Film, mit einem Komma "' – brianpck

0

Try this:

f = open("filmdata.csv","r",encoding="utf-8") 
for line in f: 
    entries = line.split(",") 
    if int(entries[0]) < 1990 : 
     print(line) 
f.close() 
0

Haben Sie versucht, mit Pandas zu suchen. Ich habe eine Film.csv Datei mit 2 Spalten (Jahr, Titel) erstellt.

import pandas as pd 
movies = pd.read_csv('movie.csv',sep=',',names=["year","title"]) 

Ausgabe von Filmen Array:

year title 
0 1990 Movie1 
1 1991 Movie2 
2 1992 Movie3 
3 1993 Movie4 
4 1994 Movie5 
5 1995 Movie6 
6 1996 Movie7 
7 1997 Movie8 
8 1999 Movie9 
9 2000 Movie10 

Lassen Sie uns sagen, dass wir alle Filme sehen möchten, wo das Jahr über 1994:

movies[movies['year']> 1994] 

    year title 
5 1995 Movie6 
6 1996 Movie7 
7 1997 Movie8 
8 1999 Movie9 
9 2000 Movie10