Konvertieren von TSV-Dateien in CSV-Dateien (mit Stückliste) in Ruby

Einführung

Dies ist eine Konvertierungsmethode von einer durch Tabulatoren getrennten Datei (TSV-Datei) in Ruby in eine CSV-Datei mit Stückliste.

Inhaltsverzeichnis

  1. Abschlusscode
    1. Erstellen einer CSV-Datei mit Stückliste
  2. Daten in TSV-Datei lesen
    1. Zeile für Zeile in CSV lesen und schreiben
  3. Führen Sie das Programm aus

0. Abschlusscode

tsv_to_csv.rb



require 'csv'

#Erstellen Sie eine CSV-Datei und fügen Sie bom hinzu.
File.write("meibo.csv", "\uFEFF")

# 'meibo2.txt'Lesen Sie die obigen Informationen zeilenweise, machen Sie sie zu einem Array mit Split und fügen Sie sie zeilenweise in die CSV-Datei ein.
CSV.open("meibo.csv", "a", force_quotes: true ) do |meibocsv|
  File.foreach('meibo.txt') do |student|
    meibocsv << student.chomp.split("\t", -1)
  end
end

1. 1. Erstellen einer CSV-Datei mit Stückliste

Stückliste (Byte Order Mark) ist ein paar Datenbytes, die am Anfang von Text erreicht werden können, der im Unicode-Codierungsformat codiert ist. Excel versucht standardmäßig, eine CSV-Datei mit Shift-JIS zu öffnen, sodass UTF-8 verstümmelte Zeichen verursacht. Um dieses Problem zu umgehen, können Sie verstümmelte Zeichen verhindern, indem Sie Excel erkennen lassen, dass sie in UTF-8 geschrieben sind, indem Sie bei der Ausgabe in UTF-8 eine Stückliste hinzufügen. Die Stückliste ist wie folgt beigefügt.

File.write("meibo.csv", "\uFEFF")

2. Daten in TSV-Datei lesen

Die zu lesende TSV-Datei lautet wie folgt.

meibo.txt


john	m	18
paul	m	20
alice	f	15
dabid	m	17
jasmin	f	17

Ich habe meibo.txt gelesen, in dem tabulatorgetrennte Formatdaten geschrieben sind, aber ich möchte beim Lesen einer Zeile die Methode zum Schreiben einer Zeile verwenden. Nachdem Sie eine Zeile tabulatorgetrennter Daten in ein Array mit Split konvertiert haben, schreiben Sie sie unverändert in die CSV-Datei.

File.foreach('meibo.txt') do |student|
(CSV-Datei)<< student.chomp.split("\t", -1)
end

3. 3. Zeile für Zeile in CSV lesen und schreiben

Wenn Sie den obigen Code in CSV.open einfügen, können Sie eine Zeile lesen und schreiben. Wenn Sie von einer durch Tabulatoren getrennten Datei in eine CSV-Datei wechseln, wird diese grundsätzlich zeilenweise verarbeitet. Dies soll verhindern, dass der Speicher überschritten wird, selbst wenn die Daten sehr groß sind, z. B. 10 Millionen Zeilen.

CSV.open("meibo.csv", "a", force_quotes: true ) do |meibo_csv|
  File.foreach('meibo.txt') do |student|
    meibo_csv << student.chomp.split("\t", -1)
  end
end

Übrigens wird -1 an das zweite Argument (Limit) von split übergeben. Der Wert dieses zweiten Arguments ist standardmäßig 0, wodurch die leere Zeichenfolge am Ende des Arrays entfernt wird. Dies funktioniert nicht, wenn der TSV ein leeres Feld hat. Sie können es lösen, indem Sie -1 übergeben.

4. Führen Sie das Programm aus

% ruby tsv_to_csv.rb 

Eine CSV-Datei mit geschriebenen Daten wird generiert.

meibo.csv


"john","m","18"
"paul","m","20"
"alice","f","15"
"dabid","m","17"
"jasmin","f","17"

Richtig in eine durch Kommas getrennte CSV-Datei konvertiert.

Recommended Posts

Konvertieren von TSV-Dateien in CSV-Dateien (mit Stückliste) in Ruby
Umgang mit TSV-Dateien und CSV-Dateien in Ruby
Konvertieren Sie mit Ruby von JSON nach TSV und von TSV nach JSON
Fügen Sie CSV-Dateien mit "'" und "" "in Ruby 2.3 in MySQL ein
CSV-Import mit Stückliste
Konvertieren Sie große XLSX-Dateien mit Apache POI in CSV
Wie man in Ruby auf unbestimmte Zeit iteriert
So installieren Sie Bootstrap in Ruby
Behandeln Sie in GCS hochgeladene CSV-Dateien
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Eine Geschichte über das Konvertieren von Zeichencodes von UTF-8 in Shift-jis in Ruby
So fügen Sie die Verarbeitung mit einer beliebigen Anzahl von Elementen in die iterative Verarbeitung in Ruby ein
So teilen Sie Dateien mit Docker Toolbox
CSV-Analyse mit Feldumbruchzeichen
Java-How zum Vergleichen von Bilddateien in Binärform
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
Ruby: CSV :: Verwendung von Table Note
Ein Skript, das Yaml aus CSV erstellt, um Anfangsdaten in Rails with Fixtures einzufügen
[Ruby] Grundlegender Schlüssel, um beim Refactoring stark zu sein
[Ruby] So konvertieren Sie eine CSV-Datei in Yaml (Yml)
[Rails] Verschiedene Möglichkeiten zum Schreiben in Seed-Dateien
Versuchen Sie, Ruby und Java in Dapr zu integrieren
So aktualisieren Sie eine vorgefertigte Datei in einem Docker-Container
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
So löschen Sie eine Ressourcendatei mit Spring-Boot
Yahoo-Nachrichten mit [Ruby + Nokogiri] kratzen → CSV speichern
So erstellen Sie die einfachste Blockchain in Ruby
Brennen Sie Dateien mit Ubuntu 18.04 LTS auf CD / DVD
So implementieren Sie Paginierung in GraphQL (für Ruby)
Ich möchte den Wert in Ruby erhalten
Ich möchte ein Objekt im CSV-Format mit mehrzeiligem Header und Filter in Java zurückgeben
Docker-Befehl zum Erstellen eines Rails-Projekts in einem einzigen Schlag in einer Umgebung ohne Ruby