Skip to content

Commit

Permalink
add: csv section
Browse files Browse the repository at this point in the history
  • Loading branch information
Ja7ad committed May 23, 2023
1 parent 5c0373b commit 57691dd
Showing 1 changed file with 52 additions and 1 deletion.
53 changes: 52 additions & 1 deletion content/chapter 4/4.11-csv.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,55 @@ slug: work-with-csv-file-in-go
weight: 7011
---

آموزش کار با csv...
## 4.11.1 مقدمه

CSV یکی از فرمت‌های متداول برای ذخیره داده‌های جدولی است. خروجی اکثر برنامه‌های قابلیت دستکاری داده، همراه با نرم‌افزار‌های آفیس، به فرمت CSV تولید می‌شود. فرمت CSV چندین ستون در یک ردیف را با استفاده از کاما (,) جدا کرده و هر ردیف را با استفاده از عبارت جدید (newline) جدا می‌کند.

در زبان برنامه‌نویسی Go نیز پکیج encoding/csv وجود دارد که در آن، توابع مربوط به خواندن و نوشتن داده‌های CSV به صورت دستی یا از طریق پرونده‌ها فراهم شده است. با استفاده از این پکیج، می‌توان داده‌های CSV را به داده‌های جدولی تبدیل کرد و برعکس.

به عنوان مثال، در ادامه یک فایل CSV به نام "data.csv" حاوی اطلاعات چند شخص را در نظر بگیرید:

```csv
Name,Age,City
John,25,New York
Jane,30,San Francisco
Bob,40,Los Angeles
```

## 4.11.2 نحوه خواندن فایل csv

برای خواندن فایل csv می‌توان با استفاده از پکیج encoding/csv پرونده CSV را باز کرد:

```go
package main

import (
"encoding/csv"
"fmt"
"os"
)

func main() {
f, err := os.Open("data.csv")
if err != nil {
panic(err)
}

r := csv.NewReader(f)
records, err := r.ReadAll()
if err != nil {
panic(err)
}

for _, row := range records {
for _, col := range row {
fmt.Print(col, "\t")
}
fmt.Println()
}
}
```

در این کد، تابع os.Open برای باز کردن پرونده CSV استفاده می‌شود. یک رابط csv.Reader ایجاد شده و یک رشته ساختارمند، پرونده CSV را می‌خواند. سپس با استفاده از یک حلقه، داده‌های جدولی چاپ می‌شود.

فراداده‌های CSV بسیار گسترده هستند و می‌توانند شامل شماره دسته، توضیحات، یادداشت‌های شخصی و غیره باشند. برای کار با این نوع داده‌ها، پکیج encoding/csv امکاناتی مانند تنظیمات csv.Reader را فراهم می‌کند، که در آن، می‌توانیم تنظیماتی مانند علامت‌گذاری مناسب فایل CSV و دیگر علامت‌گذاری‌ها را بهبود ببخشیم.

0 comments on commit 57691dd

Please sign in to comment.