当前位置:首页 >> 时尚

Go往来交往并两个csv的完成示例

  • 时尚
  • 2026-08-02 00:10:45
  • 17452

布景

但凡我们措置文件都是往交往并完成用python+pandas,切实其实很喷喷喷喷喷鼻。示例可是往交往并完成往日俄然有人找我用go写一个回并两个csv文件的 ,需求将两个csv按id举办回并 ,示例除夜致以下图

思路很复杂,往交往并完成先读进两个csv文件 ,示例然后遍历斗劲id,往交往并完成假定不异就把此外一个文件的示例内容加到第一个中 。然后成立merge.csv ,往交往并完成将上一步掉落踪掉落踪的示例数据写进csv便可 。

代码部分

package mainimport ( "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的goroutine来添加快度 。唉 ,太久没若何写go了 ,一最早切片都有点忘了。

到此这篇关于Go往来交往并两个csv的完成示例的文章就引见到这了,更多相干Go言语回并csv内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载 !

  • 关注微信

猜你喜欢

热门阅读

  • 足球最好气焰2020 穆里尼奥/伊布/安切洛蒂最好气焰是
  • 恶魔轮盘多人编制若何开启 恶魔轮盘赌多人编制联机教程一览
  • 铁汉联盟s14排位赛积分若何调剂 积分调剂引见
  • 铁汉联盟新铁汉安蓓萨暴光 铁汉联盟新铁汉安蓓萨技能引见
  • 郭艾伦更起先照晒照送球鞋�:为了随时做好预备重返赛场
  • 地下城与大胆鬼劈脸迷幻晶石若何掉落踪掉落踪 迷幻晶石掉落踪掉落踪攻略

关注我们

微信公众号