2016-04-05 9 views
0

ich eine CSV-Datei, die wie folgt aussieht:Beim Lesen von CSV-Dateien die Ausgabe ist seltsam

1ttAAAttAnaattFrench PolynesiattPFttAustralia and Oceaniatt-17.352606tt-145.509956 
2ttAAEttAnnabattAlgeriattDZttAfricatt36.822225tt7.809167 
3ttAAFttApalachicolattUnited StatesttUSttNorth Americatt29.7276066tt-85.0274416 
4ttAAGtt\NttBrazilttBRttSouth Americatt\Ntt\N 

ich dieses Juwel verwenden, um Daten zu holen: https://github.com/tilo/smarter_csv

Dies ist der Code, den ich verwende, um Daten zu zeigen, in Terminal-Konsole:

filename = 'db/csv/airports_codes.csv' 
options = { 
    :col_sep => 'tt', 
} 
records = SmarterCSV.process(filename, options) 

puts records 

ich habe diese Dateien in seeds.rb Datei, weil ich diesen Code ändern wird später meine Datenbank mit Daten zu impfen. Diese letzte Codezeile ist da, damit ich sehen kann, wie es aussieht. So laufe ich rake db:seed

Und die Ausgabe ist offensichtlich riesig, weil es ~ 5k Zeilen gibt. Jetzt ist das erste Problem, dass ich nicht alle Daten in meinem Terminal sehen kann. Als ich nach oben scrollen ist dies der erste Punkt (beachten Sie, dass ID 4674 ist, was bedeutet, es letzte ~ 250 Titel angezeigt):

{:"1"=>4674, :aaa=>"YPJ", :anaa=>"Aupaluk", :french_polynesia=>"Canada", :pf=>"CA", :australia_and_oceania=>"North America", :"_17.352606"=>59.2967, :"_145.509956"=>-69.5997} 

Wie kann ich andere Artikel?

Das zweite Problem ist, dass Schlüsselnamen wirklich seltsam sind. Wie benenne ich sie, oder besser, wie verwende ich Arrays statt Hashes?

+2

Die Tastennamen sind aufgrund der SmarterCSV der ersten Zeile als die Header Reihe behandeln. Es gibt wahrscheinlich eine Option, das zu überschreiben. –

Antwort

0

Wenn Sie die Option

:headers_in_file => false 

in Optionen, die das Problem aussortieren sollen. d.h.

filename = 'db/csv/airports_codes.csv' 
options = { 
    :col_sep => 'tt', 
    :headers_in_file => false 
} 
records = SmarterCSV.process(filename, options)