Elixir:
การทำงานกับ CSV
วิธีการ:
Elixir ด้วยความสามารถในการจับคู่รูปแบบและการสนับสนุนสำหรับการไหลข้อมูล สามารถจัดการไฟล์ CSV ได้อย่างมีประสิทธิภาพ แม้ว่าจะไม่มีไลบรารีภายนอก อย่างไรก็ตาม สำหรับความต้องการที่ซับซ้อนขึ้น nimble_csv
เป็นตัวเลือกที่รวดเร็วและตรงไปตรงมา
การอ่านไฟล์ CSV โดยไม่ใช้ไลบรารีภายนอก
คุณสามารถอ่านและแยกวิเคราะห์ไฟล์ CSV โดยใช้ฟังก์ชันที่มีอยู่ใน Elixir:
defmodule CSVReader do
def read_file(file_path) do
File.stream!(file_path)
|> Stream.map(&String.trim_trailing/1)
|> Stream.map(&String.split(&1, ","))
|> Enum.to_list()
end
end
# ตัวอย่างการใช้งาน
CSVReader.read_file("data.csv")
# ผลลัพธ์: [["Header1", "Header2"], ["Row1Value1", "Row1Value2"], ["Row2Value1", "Row2Value2"]]
การเขียนข้อมูลลงไฟล์ CSV
ในลักษณะเดียวกัน เพื่อเขียนข้อมูลลงไฟล์ CSV:
defmodule CSVWriter do
def write_to_file(file_path, data) do
File.open(file_path, [:write], fn file ->
Enum.each(data, fn row ->
IO.write(file, Enum.join(row, ",") <> "\n")
end)
end)
end
end
# ตัวอย่างการใช้งาน
data = [["Header1", "Header2"], ["Value1", "Value2"], ["Value3", "Value4"]]
CSVWriter.write_to_file("output.csv", data)
# สร้าง output.csv พร้อมข้อมูลที่จัดรูปแบบเป็น CSV
การใช้ nimble_csv
สำหรับการจัดการ CSV ที่ซับซ้อนยิ่งขึ้น nimble_csv
มอบวิธีการที่ทรงพลังและยืดหยุ่นในการทำงานกับข้อมูล CSV อย่างแรกเพิ่ม nimble_csv
เข้าไปใน dependencies ใน mix.exs
และรัน mix deps.get
:
defp deps do
[
{:nimble_csv, "~> 1.2"}
]
end
การแยกวิเคราะห์ข้อมูล CSV กับ nimble_csv
:
defmodule MyCSVParser do
NimbleCSV.define(MyParser, separator: ",", escape: "\\")
def parse(file_path) do
file_path
|> File.stream!()
|> MyParser.parse_stream()
|> Enum.to_list()
end
end
# ตัวอย่างการใช้งาน
MyCSVParser.parse("data.csv")
# ผลลัพธ์ด้วย nimble_csv อาจปรับแต่งได้ตามการกำหนดขึ้น แต่โดยทั่วไปมันจะเป็นรูปแบบของรายการหรือทูเพิล ขึ้นอยู่กับวิธีที่คุณตั้งค่า parser ของคุณ
การเขียนข้อมูล CSV โดยใช้ nimble_csv
ต้องการการแปลงข้อมูลของคุณเป็นรูปแบบที่เหมาะสมก่อน จากนั้นเขียนลงไฟล์ เหมือนตัวอย่าง Elixir ธรรมดาแต่ใช้ประโยชน์จาก nimble_csv
ในการสร้างแถว CSV ที่จัดรูปแบบอย่างถูกต้อง
โดยเลือกวิธีการที่เหมาะสมกับความซับซ้อนของงานของคุณ คุณสามารถจัดการไฟล์ CSV ใน Elixir ด้วยความยืดหยุ่นและพลังอย่างมาก