中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Go來合并兩個csv

發布時間:2021-10-28 10:52:50 來源:億速云 閱讀:156 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何使用Go來合并兩個csv”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用Go來合并兩個csv”這篇文章吧。

背景

通常我們處理文件都是用python+pandas,確實很香。但是今天突然有人找我用go寫一個合并兩個csv文件的,需要將兩個csv按id進行合并,大致如下圖

如何使用Go來合并兩個csv

思路很簡單,先讀入兩個csv文件,然后遍歷比較id,如果相同就把另一個文件的內容加到第一個中。然后創建merge.csv,將上一步得到的數據寫入csv即可。

代碼部分

package main

import (
 "encoding/csv"
 "log"
 "os"

 "fmt"
)

func join(fileName1 string, fileName2 string) (row [][]string) {
 fs1, _ := os.Open(fileName1)
 r1 := csv.NewReader(fs1)
 content1, err := r1.ReadAll()
 if err != nil {
  log.Fatalf("can not readall, err is %+v", err)
 }

 fs2, _ := os.Open(fileName2)
 r2 := csv.NewReader(fs2)
 content2, err := r2.ReadAll()
 if err != nil {
  log.Fatalf("can not readall, err is %+v", err)
 }
 row = make([][]string, len(content1[1:]))

 for i, row1 := range content1[1:] {
  for _, row2 := range content2[1:] {
   if row1[0] == row2[0] {
    row[i] = append(row[i], row1[0], row1[1], row1[2], row2[1], row2[2])
   }
  }
 }
 return
}

func edit(filename string, row [][]string) {
 f, err := os.Create(filename)
 if err != nil {
  panic(err)
 }
 defer f.Close()

 //防止亂碼
 f.WriteString("\xEF\xBB\xBF")
 w := csv.NewWriter(f)
 w.Write([]string{"ID", "name", "gender", "course", "score"})
 w.WriteAll(row)
 w.Flush()
}

func main() {
 row := join("1.csv", "2.csv")
 fmt.Println(row)
 edit("join.csv", row)
 fmt.Println("合并已完成!")
}

如何使用Go來合并兩個csv

如何使用Go來合并兩個csv

以上是“如何使用Go來合并兩個csv”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东兴市| 屯昌县| 盘锦市| 横峰县| 梨树县| 阆中市| 榕江县| 光山县| 高淳县| 新余市| 图们市| 胶州市| 志丹县| 阳西县| 青阳县| 大理市| 瓦房店市| 呼图壁县| 嘉义市| 洪江市| 汾阳市| 隆昌县| 浪卡子县| 全椒县| 阳新县| 望都县| 项城市| 加查县| 阿克苏市| 鸡泽县| 化德县| 鸡西市| 涟水县| 灌云县| 军事| 和龙市| 通化市| 海淀区| 留坝县| 会同县| 乌审旗|