35 lines
566 B
Go
Executable File
35 lines
566 B
Go
Executable File
package tabatal
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
func Parse(data string) (a []map[string]interface{}, err error) {
|
|
// a := []map[string]interface{}{}
|
|
r := csv.NewReader(strings.NewReader(data))
|
|
r.Comma = '\t'
|
|
r.Comment = ';'
|
|
var header []string
|
|
for i := 0; ; i++ {
|
|
row, err := r.Read()
|
|
if err == io.EOF {
|
|
break
|
|
} else if err != nil {
|
|
return a, err
|
|
}
|
|
if i == 0 {
|
|
header = row
|
|
continue
|
|
}
|
|
|
|
record := map[string]interface{}{}
|
|
for i, h := range header {
|
|
record[h] = row[i]
|
|
}
|
|
a = append(a, record)
|
|
}
|
|
return a, nil
|
|
}
|