CSV jelentése “vesszővel elválasztott értékek”.
ez egy általános adatformátum, amely vesszővel elválasztott értékekből álló sorokból áll. & adatok importálására szolgál.
például:
exportálhatja Gmail-névjegyeit CSV-fájlként, és importálhatja is őket ugyanabban a formátumban.
így néz ki egy CSV fájl:
id,name1,chocolate2,bacon3,apple4,banana5,almonds
most megtudhatja, hogyan kell használni a Ruby CSV könyvtárat & CSV fájlok írására.
Ruby CSV elemzés
a Ruby beépített CSV könyvtárral rendelkezik.
közvetlenül elolvashat egy fájlt:
require 'csv'CSV.read("favorite_foods.csv")
vagy elemezhet egy karakterláncot CSV-adatokkal:
require 'csv'CSV.parse("1,chocolate\n2,bacon\n3,apple")
az eredmény?
kapsz egy kétdimenziós tömb, ahol minden bejegyzés egy sorban a táblázatban.
így néz ki:
, , , , , ]
használhatja tömb indexek, mint a data
dolgozni ezeket az adatokat.
de van egy jobb út!
CSV opciók
ha a fájl fejlécekkel rendelkezik, megmondhatja a CSV elemzőnek, hogy használja őket.
table = CSV.parse(File.read("cats.csv"), headers: true)
most egy többdimenziós tömb helyett egy CSV tábla objektumot kap.
itt van a leírás:
“a
CSV::Table
egy kétdimenziós adatstruktúra a CSV dokumentumok ábrázolására. A táblázatok lehetővé teszik, hogy soronként vagy oszloponként dolgozzon az adatokkal, manipulálja az adatokat, sőt az eredményeket vissza is konvertálja CSV-be.”
az egyik ilyen táblázat alapján bármelyik sorból megkaphatja a szükséges adatokat.
példa:
table# "1"table# "chocolate"
itt 0
az első sor, id
& name
az oszlopnevek.
két táblázat mód van:
- by_col
- by_row
a táblázat módjának megváltoztatásával (alapértelmezés szerintrow
) különböző szögekből tekintheti meg az adatokat.
például:
table.by_col# table.by_col#
itt 0
az első oszlop, 1
a második oszlop.
ez a két módszer visszaadja a táblázat másolatát.
ha módosítani szeretné az eredeti táblázatot, akkor használhatja a by_col!
& by_row!
módszereket.
ez memóriahatékonyabb lesz, mivel a táblázat nem jön létre.
hogyan kell használni a CSV konvertereket
lehet, hogy észrevette, hogy a id
oszlopot karakterláncok tömbjeként kaptuk.
mi van, ha egész számokra van szükségünk?
akkor kap őket hívja to_i
minden húr…
de van egy parancsikont!
a Ruby CSV könyvtár megvalósítja az úgynevezett konvertereket.
a konverter automatikusan átalakítja az értékeket az Ön számára.
például:
CSV.parse("1,2,3,4,5")# ]CSV.parse("1,2,3,4,5", converters: :numeric)# ]
6 beépített átalakító van:
- Integer
- Float
- numerikus (Float + Integer)
- Dátum
- DateTime
- minden
de létrehozhat saját egyedi átalakítót is.
itt van, hogyan:
CSV::Converters = ->(value) { value.to_sym rescue value }
használhatja az új átalakító, mint ez:
CSV.parse("a,b,c", headers: false, converters: :symbol)# ]
új CSV-fájl létrehozása
a & CSV-fájlok különböző módon történő elemzése mellett CSV-t is létrehozhat a semmiből.
ez a könnyű út:
cats = , , ]cats.map { |c| c.join(",") }.join("\n")
használhatja a generate
módszert is:
CSV.generate do |csv| csvThis prepares the data to be in the right format.
If you want to write to a file you'll have to use something like , or instead of you can use with a file name & write mode enabled.
CSV.open("cats.csv", "w") do |csv| csvNow you have a new CSV file!
CSV Gems & Performance
The built-in library is fine & it will get the job done.
But you can also find a few CSV parsing gems with different features.
For example, the gem will convert your CSV data into an array of hashes.
Example:
require 'smarter_csv'IntegerConverter = Object.newdef IntegerConverter.convert(value) Integer(value)endSmarterCSV.process('testing.csv', value_converters: { id: IntegerConverter })#itt van egy teljesítmény-összehasonlítás:
Comparison: CSV: 112.9 i/sSmarter CSV: 21.7 i/s - 5.21x slower Tabular: 17.3 i/s - 6.52x slowerÖsszegzés
megtanultad, hogyan kell & CSV fájlokat írni Ruby - ban! Azt is megtudtad, hogy a & alternatív Ruby gems átalakítók feldolgozzák a CSV-adatokat.
ha nagy CSV fájlokat (> 10 MB) szeretne feldolgozni, akkor érdemes a
CSV.foreach(file_name)
metódust blokkokkal használni. Ez egyszerre egy sort fog olvasni & sokkal kevesebb memóriát használ.kérjük, ossza meg ezt a cikket, hogy minél többen megtalálják!