分享
  1. 首页
  2. 文章

golang语言实现读取csv文件内容,把相同的内容提取到另外一个文件

rufidmx · · 7212 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main
import (
"encoding/csv"
"fmt"
"io"
"os"
"path/filepath"
"strconv"
)
func CheckErr(err error) {
if nil != err {
panic(err)
}
}
func GetFullPath(path string) string {
absolutePath, _ := filepath.Abs(path)
return absolutePath
}
func WriteFile(content []string) {
f, err := os.OpenFile("sameName.csv", os.O_APPEND|os.O_CREATE, os.ModeAppend)
CheckErr(err)
defer f.Close()
f.WriteString("\xEF\xBB\xBF")
writer := csv.NewWriter(f)
writer.Write(content)
writer.Flush()
}
var exsit []string = []string{}
func Exsit(name string) bool {
size := len(exsit)
for i := 0; i < size; i++ {
if exsit[i] == name {
return true
}
}
return false
}
func findSame(path string) {
fullPath := GetFullPath(path)
records := getStrings(fullPath)
size := len(records)
for i := 0; i < size; i++ {
rec := records[i]
recNoDate := rec[:len(rec)-19]
flag := 1
for i2 := i + 1; i2 < size; i2++ {
if recNoDate == records[i2][:len(records[i2])-19] && !Exsit(recNoDate) {
WriteFile([]string{strconv.Itoa(flag), records[i2]})
flag++
}
}
if flag > 1 && !Exsit(recNoDate) {
exsit = append(exsit, recNoDate)
WriteFile([]string{strconv.Itoa(flag), rec})
}
}
size = len(exsit)
f, err := os.OpenFile("debug.csv", os.O_APPEND|os.O_CREATE, os.ModeAppend)
CheckErr(err)
defer f.Close()
f.WriteString("\xEF\xBB\xBF")
writer := csv.NewWriter(f)
for i := 0; i < size; i++ {
writer.Write([]string{exsit[i]})
}
writer.Flush()
}
func getStrings(path string) []string {
f, err := os.Open(path)
CheckErr(err)
defer f.Close()
records := []string{}
reader := csv.NewReader(f)
record := []string{}
for {
record, err = reader.Read()
if err == io.EOF {
break
} else if nil != err {
fmt.Println(err)
return nil
}
records = append(records, record[0])
}
return records
}
func main() {
var path string
if len(os.Args) > 1 {
path = os.Args[1]
} else {
path, _ = os.Getwd()
}
findSame(path)
fmt.Println("done!")
}



有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
7212 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏