2017-08-21 1 views
1

Ich benutze csv.dictreader, um alle Bestände in einer Liste von CSV-Dateien, die 'True' in der Zeile Daten zurückgegeben werden.Ende der Zeile Zeichen Verwirrung bei der Verwendung von csv.dictreader

filename = glob.glob('*.csv') 

susadict = {} 
for file in filename: 
    with open(file, 'rb') as csvfile: 
     reader = csv.DictReader(csvfile) 
     susadict[file] = [row['Ticker'] for row in reader if row['Data'] == 'True'] 

Dieser Code nur für CSV-Dateien arbeitet, die ein 'A'-Charakter in der letzten Zeile, aber mit ‚æ‘ oder keine Zeichen, jetzt ab nur 2 meiner 11-Dateien für Dateien funktioniert nicht haben Felder, so dass es 9 leer bleibt.

Meine erwartete Ausgabe soll alle 11 arbeiten.

+0

ich Typeerror: 'Newline' ist ein ungültiges Schlüsselwort-Argument für diese Funktion –

+0

Scheint Sie auf ** 2.7 sind ** , hat keinen solchen Parameter. Versuchen Sie [csv.Sniffer] (https://docs.python.org/2/library/csv.html#csv.Sniffer) – stovfl

+0

wie würde das Format aussehen? Verstehen Sie nicht die Dokumentation –

Antwort

0

Question: but what goes in the dialect = , i have dialect = csv.Sniffer()

Folgen Sie dem Beispiel aus dem angegebenen Link: csv.Sniffer
Die .seek(0) nach Sniffer ist absolut notwendig!

Sie eine der folgenden Optionen verwenden könnte, beide sind gleichwertig:

  1. reader = csv.DictReader(csvfile, dialect)
  2. reader = csv.DictReader(csvfile, dialect=dialect)

Ihr ganzes Beispiel aussehen sollte:

filename = glob.glob('*.csv') 
susadict = {} 
for file in filename: 
    # Python 3.x: with open(file) as csvfile: 
    with open(file, 'rb') as csvfile: 
     dialect = csv.Sniffer().sniff(csvfile.read(1024)) 
     csvfile.seek(0) 

     reader = csv.DictReader(csvfile, dialect) 
     susadict[file] = [row['Ticker'] for row in reader if row['Data'] == 'True'] 

mit Python getestet: 3.4.2 und Python: 2.7.9 - csv: 1,0

+0

Ich bekomme ValueError: I/O-Operation auf geschlossene Datei –

+0

@thomas: [Bearbeiten] Ihre Frage und zeigen ** Ihre ** geänderten Code und die voll ** Rückverfolgung **. – stovfl

Verwandte Themen