Umgang mit TSV-Dateien und CSV-Dateien in Ruby

Einführung

In diesem Artikel habe ich die Grundkenntnisse zum Umgang mit TSV- und CSV-Dateien in Ruby zusammengefasst, als wäre es mein Memo. Vor TSV und CSV möchte ich die File-Klasse gemeinsam überprüfen.

Was ist eine TSV-Datei?

Datei mit Daten, die durch Tabulatoren getrennt sind

Was ist eine CSV-Datei?

Datei mit durch Kommas getrennten Daten (,)

In diesem Artikel verwenden wir die folgende TSV-Datei als Beispiel.

 meibo.txt
john	m	18
paul	m	20
alice	f	15
dabid	m	17
jasmin	f	17

Informationen zur File-Klasse

Datei öffnen

# 
 File.open("meibo.txt") do |file|
 
end

# 
file = File.open("meibo.txt")
 
file.close
 File.open("meibo.txt") do |file|
  puts.file
end

Prozessschreibmethode 2 Die Verarbeitungsschreibmethode 1 schließt die Datei ohne Erlaubnis, auch wenn sie geöffnet ist. Bei Schreibmethode 2 bleibt die Datei jedoch geöffnet, sofern nicht die Methode "close" verwendet wird. Also persönlich schreibe ich gerne 1. Wenn Sie beispielsweise die oben genannten Schritte ausführen, erhalten Sie die Standardausgabe des Dateiobjekts wie folgt.

<File:0x00007fba4497ea68>

Lesen Sie die Datei

Die geöffnete Datei wird gelesen.

 File.open("meibo.txt") do |file|
  p file.read
end

Dann ist die Standardausgabe wie folgt.

"john\tm\t18\npaul\tm\t20\nalice\tf\t15\ndabid\tm\t17\njasmin\tf\t17\n"

Sie können es plötzlich lesen.

file = File.read("meibo.txt")
p file

=>
"john\tm\t18\npaul\tm\t20\nalice\tf\t15\ndabid\tm\t17\njasmin\tf\t17\n"

Wenn Sie Zeile für Zeile lesen möchten, öffnen Sie die Datei einmal, lesen Sie sie Zeile für Zeile im Verarbeitungsteil und fügen Sie Ihre bevorzugte Verarbeitung wie unten gezeigt ein.

 File.open("meibo.txt") do |file|
   file.each do |line|
 wird bearbeitet
  end
end

# Zum Beispiel

 File.open("meibo.txt") do |file|
   file.each do |line|
    p "#{line.chomp}\tfoo"
  end
end

=>
"john\tm\t18\tfoo"
"paul\tm\t20\tfoo"
"alice\tf\t15\tfoo"
"dabid\tm\t17\tfoo"
"jasmin\tf\t17\tfoo"

Das Obige ist, wie man es in der File-Klasse handhabt, aber da die Ausgabe eine Folge von Zeichenketten ist, denke ich, dass es ein wenig schwierig ist, damit umzugehen. Daher können Sie die Daten mithilfe der CSV-Klasse einfacher verarbeiten.

Über die CSV-Klasse

Ich denke, dass es ursprünglich eine Klasse für die Verarbeitung von CSV-Dateien ist, aber wenn Sie die Option col_sep verwenden (durch die angegebene Zeichenfolge getrennt), können TSV-Dateien auch von der CVS-Klasse verarbeitet werden. Wenn Sie die CSV-Klasse verwenden, fügen Sie am Anfang der Zeile require" csv " hinzu.

require "csv"

# Wenn Sie die offene Methode verwenden
 CSV.open("meibo.txt", col_sep: "\t") do |tsv|
  p tsv.read
end

# Wenn Sie die offene Methode nicht verwenden
tsv = CSV.read("meibo.txt", col_sep: "\t")
p tsv

=>
[["john", "m", "18"], ["paul", "m", "20"], ["alice", "f", "15"], ["dabid", "m", "17"], ["jasmin", "f", "17"]]

Beim Lesen mit der CSV-Methode wird das Ausgabeergebnis in einem Array zurückgegeben. Dies erleichtert die Handhabung als Daten. Wenn Sie Zeile für Zeile lesen möchten, verwenden Sie die folgende Methode "foreach".

require "csv"

 CSV.foreach("meibo.txt", col_sep: "\t") do |line|
 wird bearbeitet
end

# Zum Beispiel
 CSV.foreach("meibo.txt", col_sep: "\t") do |line|
  p line
end

=>
["john", "m", "18"]
["paul", "m", "20"]
["alice", "f", "15"]
["dabid", "m", "17"]
["jasmin", "f", "17"]

Auf diese Weise können Sie das Array für jede Zeile bearbeiten.

Übrigens können Sie natürlich auch eine neue CSV-Datei öffnen und darauf schreiben.

require "csv"

 CSV.open("meibo.csv","w") do |line| #"w"Ist im Schreibmodus
 line << ["michel","m",16]
end

 meibo.csv
michel,m,16

Konvertieren Sie TSV in CSV

Schließlich können Sie eine TSV-Datei mit der bisher eingeführten Syntax in eine CSV-Datei konvertieren. Plötzlich lautet die Schlussfolgerung wie folgt.

require "csv"

 CSV.open('meibo.csv', 'w') do |csv|
   CSV.foreach("meibo.txt", col_sep: "\t") do |line|
   csv << line
 end
end

Bereiten Sie zunächst eine CSV-Datei im Schreibmodus vor. Der Ablauf besteht darin, jede Zeile der TSV-Datei einzeln mit "foreach" in der CSV-Datei zu speichern. Sie können das Gegenteil von CSV zu TSV tun.

schließlich

Anfangs habe ich die File-Klasse nicht ein wenig verstanden, aber ich konnte sie beim Schreiben dieses Artikels in meinem Kopf organisieren, sodass ich sie weiterhin verwenden werde.

Recommended Posts

Umgang mit TSV-Dateien und CSV-Dateien in Ruby
Konvertieren von TSV-Dateien in CSV-Dateien (mit Stückliste) in Ruby
Fügen Sie CSV-Dateien mit "'" und "" "in Ruby 2.3 in MySQL ein
Wie man in Ruby auf unbestimmte Zeit iteriert
So installieren Sie Bootstrap in Ruby
Behandeln Sie in GCS hochgeladene CSV-Dateien
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
[Java] Wie man Dateien ausgibt und schreibt!
Abrufen und Hinzufügen von Daten aus dem Firebase Firestore in Ruby
[Einfach] So aktualisieren Sie Ruby und Bundler
Ruby: CSV :: Verwendung von Table Note
Konvertieren Sie mit Ruby von JSON nach TSV und von TSV nach JSON
[Ruby] So konvertieren Sie eine CSV-Datei in Yaml (Yml)
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Vorgehensweise optional in Protokollpuffern (proto3)
So erstellen Sie Parkett-Tools und führen Parkett-Dateien zusammen
So erstellen Sie die einfachste Blockchain in Ruby
Ruby So konvertieren Sie zwischen Groß- und Kleinschreibung
So implementieren Sie Paginierung in GraphQL (für Ruby)
So komprimieren Sie eine JAVA-CSV-Datei und verwalten sie in einem Byte-Array
[Ruby] Verwendung der Standardausgabe bei der bedingten Verzweigung
Wie kann ich IBM Mainframe-Dateien in Java eingeben / ausgeben?
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
So starten Sie einen anderen Befehl in einem Ruby-Programm
Syntaxen Markieren Sie eine Datei wie Dockerfile.production mit Pycharm
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
So starten Sie die Swagger-Benutzeroberfläche und den Swagger-Editor in Docker
So beheben Sie den SSL_connect-Fehler im PayPal Ruby SDK
Umgang mit hochgeladenen Bildern
Verwendung von Ruby return
[Ruby] Wie man auskommentiert
Ruby: Wie man Cookies benutzt
Umgang mit Instanzen
Zurücksetzen der Migrationsdatei
So legen Sie mit JAXB Zeichencode und Zeilenvorschubcode fest
So trennen Sie Wörter in Namen in Klassen, Methoden und Variablen
[Forge] So registrieren Sie Ihre eigene Entität und Ihr Entity Render in 1.13.2
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
[Rails] So definieren Sie Makros in Rspec und standardisieren die Verarbeitung
So rufen Sie den Hashwert in einem Array in Ruby ab
Aufrufen und Verwenden der API in Java (Spring Boot)
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
So entwickeln und registrieren Sie eine Sota-App in Java
So installieren Sie PHP 7.4- und SQL Server-Treiber in CentOS 7.7
So überprüfen Sie die Erweiterung und Größe der hochgeladenen Dateien
So fügen Sie PKCE Code_Verifier und Code_Challenge in die JMeter-Anforderung ein
So wechseln Sie in Netty dynamisch zwischen FIN und RST
Umgang mit verschiedenen Versionen von rbenv und Ruby
Wie man Lombok im Frühling benutzt
Verwendung von StringBurrer und Arrays.toString.
So finden Sie May'n in XPath
So blenden Sie die Bildlaufleiste in WebView aus
So führen Sie JUnit in Eclipse aus