溫馨提示×

溫馨提示×

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

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

如何使用Go來合并兩個csv

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

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

背景

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

如何使用Go來合并兩個csv

思路很簡單,先讀入兩個csv文件,然后遍歷比較id,如果相同就把另一個文件的內(nèi)容加到第一個中。然后創(chuàng)建merge.csv,將上一步得到的數(shù)據(jù)寫入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”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI