2017-06-20 2 views
0

Ich habe derzeit dieses Skript, das Benutzernamen aus einer gegebenen CSV generiert. Anstatt diese Ergebnisse auf der Konsole zu drucken, wie kann ich mit diesen Ergebnissen eine neue CSV schreiben?CSV aus Ruby-Ergebnissen generieren

Dies ist das Skript, das ich derzeit habe, läuft ohne Fehler. Ich gehe davon aus, wenn ich in der do | row | eine neue CSV schreibe Blockieren wird es X Menge neuer Dateien erstellen, die ich nicht will.

require 'csv' 

CSV.foreach('data.csv', :headers => true) do |row| 
    id = row['id'] 
    fn = row['first_name'] 
    ln = row['last_name'] 
    p fn[0] + ln + id[3,8] 
end 
+1

_Sidenote: _ ** nie ** verwenden '+', um Strings in Ruby zu verketten, es ist ein Code-Geruch. – mudasobwa

Antwort

3

verwalten Sie einfach die CSV-Datei um das Lesen zu schreiben:

CSV.open("path/to/file.csv", "wb") do |csv| 
    CSV.foreach('data.csv', :headers => true) do |row| 
    id = row['id'] 
    fn = row['first_name'] 
    ln = row['last_name'] 
    csv << [fn[0], ln, id[3,8]] 
    # or, to output it as a single column: 
    # csv << ["#{fn[0]}#{ln}#{id[3,8]}"] 
    end 
end 

Writing CSV to a file.

+0

Anstatt es auf drei verschiedene Spalten auszugeben, wie kann ich es so machen, dass es eine Zeichenfolge ist? Ich habe versucht, Kommas durch Pluszeichen zu ersetzen, bekomme aber einen Nullfehler. –

+2

Eine Antwort wurde aktualisiert: Verwenden Sie String-Interpolation. – mudasobwa