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

百科 · 2026-09-05 01:15:04

布景

但凡我们措置文件都是往交往并完成用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内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载 !

文章推荐:

发家视频号存眷 ,天天都可以撸  ,团长对接

iPhone13色彩有几个

小米平板5若何查激活时分

远看互动壁纸若何下载

《嗨芽儿爱全国》定档8月31日 王祖蓝鞠萍董璇定义高质量伴随

小米平板5悬浮球若何设置

独霸降噪耳机便可以无缺阻拦听力毁伤了吗?蚂蚁庄园降噪耳机

小米平板5若何交换图标

王源巡演长沙站再度爆满 小我演唱会不美不雅不雅不雅不雅不雅不雅演人次累计打破140万

远看互动壁纸若何下载

金铲铲之战暗域巨魔第三关若何过?金铲铲之战暗域巨魔通关编制分享

蚂蚁丛林梭梭树服装若何掉落踪掉落踪

热门浏览

标签列表