您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何使用Go來合并兩個csv”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用Go來合并兩個csv”這篇文章吧。
通常我們處理文件都是用python+pandas,確實很香。但是今天突然有人找我用go寫一個合并兩個csv文件的,需要將兩個csv按id進行合并,大致如下圖
思路很簡單,先讀入兩個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”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(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)容。