2016-05-01 8 views
1

So möchte ich eine Funktion haben, die durch eine Datei lesen kann und in der Lage sein, die Sachen in ihnen zu zählen. Bisher habe ich das:Iterieren durch eine Datei und verarbeiten sie

import csv 
def get_stats(train_file, valid_pfile = "cmu-phonemes.txt", valid_graphemes = 
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '_'}): 

    invalid_row = 0 
    valid_row = 0 
    phonemes_count = 0 
    graphemes_count = 0 
    underscore_count = 0 

    csv_open = open(train_file) 
    reader = csv.reader(csv_open) 

    with open(valid_pfile) as valid_p: 
     valid_pset = set(line.strip() for line in valid_p) 
    valid_gset = set(valid_graphemes) 

Wie Sie vielleicht vermuten, ich möchte die Zahlen von bestimmten bestimmten Sachen zählen. Aber das ist nicht unbedingt schwierig. Die Sache ist, dass ich keinen Weg finde, um die Datei zu durchlaufen und noch ein bisschen zu zählen.

Hier ist eine Beispieldatei:

phonemes,graphemes 
W IY K D EY,w ee k d ay 
T EH K S T,t e x _ t 
Y UW,ewe _ 
SH UW T,chu te 
SH UW T,chu te 
SH UW T,chu te ! 
SX AH K,s u ck 

Die Frage ist, wie kann ich durch die Datei durchlaufen und trennen sie von diesem „“ in der Mitte (csv-Format) So konnte ich so etwas wie

haben
[["SH", "UW", "T"],["chu", "te"]] 

Oder etwas wie das, das für Schleifen und überprüfen verwendet werden kann.

+0

Haben Sie versucht 'line.split (',')'? – Pouria

+0

Sie scheinen die Datei bereits zu durchlaufen. Ist es 'line.split (',')', nach dem Sie suchen? Was brauchst du noch? – cdarke

+0

@cdarke das würde eigentlich zwei verschiedene Listen oder Container-Objekte machen? –

Antwort

1
file_output = [] 
with open(valid_pfile, 'r') as f: 
    for line in f.readlines()[1:]: # ignoring the first line which is header 
     file_output.append([v.split() for v in line.split(',')]) 

Nach diesem Block wird der Wert von file_output sein:

[[['W', 'IY', 'K', 'D', 'EY'], ['w', 'ee', 'k', 'd', 'ay']], 
[['T', 'EH', 'K', 'S', 'T'], ['t', 'e', 'x', '_', 't']], 
[['Y', 'UW'], ['ewe', '_']], 
[['SH', 'UW', 'T'], ['chu', 'te']], 
[['SH', 'UW', 'T'], ['chu', 'te']], 
[['SH', 'UW', 'T'], ['chu', 'te', '!']], 
[['SX', 'AH', 'K'], ['s', 'u', 'ck']]] 

Jetzt, können Sie diese so, wie Sie wollen, verwenden können.