Ignorieren Sie Zeilen mit leeren Werten, während Sie eine CSV-Anwendung in Rails importieren

8

Ich habe eine App, mit der ich Benutzern den Import von CSV-Daten erlauben kann.

Alles funktionierte, bis die Benutzer begannen, Daten mit leeren Zeilen in die CSV-Datei zu importieren. Ich verwende Folgendes, um die Zeilen aus der CSV-Datei zu extrahieren:

%Vor%

Ich dachte, wenn ich die Option skip_blanks hinzufügen würde, dass es das tun würde, aber nicht. Irgendwelche Ideen, wie ich die leeren Zeilen ignorieren kann.

Danke!

    
Graham Jackson 18.12.2013, 05:00
quelle

5 Antworten

6

Dies sollte funktionieren

%Vor%

BEARBEITEN

Sie haben für readlines angefordert, es ruft am Ende im CSV-Quellcode auf, aber das ist es:

%Vor%

Ich fühle mich offen, würde besser funktionieren, obwohl ich keine Bankmarkierung gemacht habe

%Vor%

Das obige gibt eine Auflistung von CSV :: Row-Objekten

zurück     
bjhaid 18.12.2013, 05:35
quelle
5

Dies gibt ein CSV :: Table-Objekt zurück.

CSV.parse(import_file, headers: true, skip_blanks: true).delete_if { |row| row.to_hash.values.all?(&:blank?) }

    
Keith Johnson 24.07.2014 21:44
quelle
0

Wenn Sie auch Spalten filtern möchten, die nur Leerzeichen enthalten, verwenden Sie:

%Vor%     
Markus Andreas 19.10.2016 09:03
quelle
0

So habe ich es geschafft, leere Zeilen aus csv:

zu entfernen %Vor%     
Evgenii 20.01.2017 02:03
quelle
0
___ answer40126784 ___

Wenn Sie auch Spalten filtern möchten, die nur Leerzeichen enthalten, verwenden Sie:

%Vor%     
___ qstntxt ___

Ich habe eine App, mit der ich Benutzern den Import von CSV-Daten erlauben kann.

Alles funktionierte, bis die Benutzer begannen, Daten mit leeren Zeilen in die CSV-Datei zu importieren. Ich verwende Folgendes, um die Zeilen aus der CSV-Datei zu extrahieren:

%Vor%

Ich dachte, wenn ich die Option skip_blanks hinzufügen würde, dass es das tun würde, aber nicht. Irgendwelche Ideen, wie ich die leeren Zeilen ignorieren kann.

Danke!

    
___ answer41754925 ___

So habe ich es geschafft, leere Zeilen aus csv:

zu entfernen %Vor%     
___ answer24944530 ___

Dies gibt ein CSV :: Table-Objekt zurück.

CSV::Table

    
___ tag123rubyonrails3 ___ Ruby on Rails ist ein in Ruby geschriebenes Open-Source-Web-Entwicklungs-Framework. Ruby on Rails folgt dem Prinzip der Konvention über die Konfiguration und befreit Sie davon, Dinge neu erfinden zu müssen, um produktiv zu bleiben. Verwenden Sie dieses Tag nur für Rails 3-spezifische Fragen und markieren Sie diese Fragen [ruby-on-rails]. ___ tag123csv ___ Comma-Separated Values ​​oder Character-Separated Values ​​(CSV) ist ein standardmäßiges "Flat File Database" -Format zum Speichern von Tabellendaten im Klartext, bestehend aus einer optionalen Kopfzeile, in der die durch Kommas oder Tabulatoren abgegrenzten Tabellenfelder aufgeführt sind Trennzeichen, gefolgt von einer oder mehreren Zeilen (durch Zeilentrennung getrennt), die die Tabellensätze als getrennte Listen der Werte darstellen. Newlines und Trennzeichen können in (zitierten) Feldern erscheinen. ___ qstnhdr ___ Ignorieren Sie Zeilen mit leeren Werten, während Sie eine CSV-Anwendung in Rails importieren ___ tag123ruby ___ Ruby ist eine multi-plattform Open-Source, dynamische objektorientierte interpretierte Sprache, erstellt von Yukihiro Matsumoto (Matz) im Jahr 1995. Die [Ruby] -Tag ist für Fragen im Zusammenhang mit der Ruby-Sprache, einschließlich seiner Syntax und seiner Bibliotheken . Fragen speziell zum Ruby-on-Rails-Framework sollten mit [ruby-on-rails], nicht [ruby] getaggt werden. Verwenden Sie dies nicht, um Ruby in der japanischen Sprache zu markieren. ___ tag123import ___ Bezieht sich allgemein auf das Verschieben von Daten aus einer externen Quelle in die Plattform, das Programm oder den Datensatz. ___ antwort43382828 ___

Die Lösung hängt davon ab, ob Sie die CSV mit oder ohne Header lesen und ob Sie weiterhin mit einem CSV::Row -Objekt arbeiten oder ob Sie mit einem Array von %code%

zufrieden sind

Ohne Header erhalten Sie Zeilen, die ungefähr wie folgt aussehen:

%Vor%

Mit Kopfzeilen:

%Vor%

LÖSUNG

Ohne Header und Rückgabe-Array von CSV :: Row

%Vor%

Ohne Header und Rückgabe CSV :: Table

%Vor%

Mit Kopfzeilen und Rückgabe-Array von CSV :: Row

%Vor%

Ohne Header und Rückgabe CSV :: Table

%Vor%

WEITERLESEN

Ruby-Dokumentation für delete_if

    
___ answer20650397 ___

Dies sollte funktionieren

%Vor%

BEARBEITEN

Sie haben für readlines angefordert, es ruft am Ende im CSV-Quellcode auf, aber das ist es:

%Vor%

Ich fühle mich offen, würde besser funktionieren, obwohl ich keine Bankmarkierung gemacht habe

%Vor%

Das obige gibt eine Auflistung von CSV :: Row-Objekten

zurück     
___
Guy C 13.04.2017 03:01
quelle

Tags und Links