2016-10-21 3 views
0

ich eine CSV-Datei, und ich kann wie folgt durch suchen:Finden Index einer bestimmten CSV Zeile

csv.find {|row| row[0] == 'MB_ID'} 

Es gibt ein Objekt:

#<CSV::Row "MB_ID":"MB_ID"> 

Wie kann ich den Index erhalten der Zeile relativ zur CSV-Datei? Ich versuchte .index, aber hat nicht funktioniert. Hier

ist ein Beispiel:

MB_ID 
CATEGORIE_ARTICLE_ARTICLE_ID 
COMMENTAIRE_ID 
CLUB_ID 
MESSAGE_ID 
EXP_ID 
ADH_ID 
PRO_ID 
LA_ID 
SA_ID 

So das erwartete Ergebnis wäre 1 für "MB_ID" (oder 0, je nachdem wie CSV indiziert).

las ich die Datei mit:

csv = File.read("foreign.csv") 
csv = CSV.parse(csv, :headers => true) 
+0

'csv.index {| Zeile | row [0] == 'MB_ID'} 'scheint bei mir zu funktionieren. –

+0

Können Sie eine CSV-Beispieldatei und Ihr erwartetes Ergebnis hinzufügen? – Stefan

+0

Wie liest du die CSV-Datei? – Stefan

Antwort

2

index funktioniert nur für Arrays. Für enumerables wie CSV::Table, müssen Sie verwenden find_index:

csv.find_index { |row| row[0] == 'MB_ID' } #=> 0 
Verwandte Themen