读取csv文件时如何跳过第一行?

我有一个笨拙的csv文件" title="csv文件">csv文件,我需要跳过第一行来阅读它。

我正在使用python / pandas轻松做到这一点

df = pd.read_csv(filename, skiprows=1)

但是我不知道如何在Go中做到这一点。

package main

import (

"encoding/csv"

"fmt"

"log"

"os"

)

type mwericsson struct {

id string

name string

region string

}

func main() {

rows := readSample()

fmt.Println(rows)

//appendSum(rows)

//writeChanges(rows)

}

func readSample() [][]string {

f, err := os.Open("D:/in/20190629/PM_IG30014_15_201906290015_01.csv")

if err != nil {

log.Fatal(err)

}

rows, err := csv.NewReader(f).ReadAll()

f.Close()

if err != nil {

log.Fatal(err)

}

return rows

}

错误:

2019/07/01 12:38:40 record on line 2: wrong number of fields

PM_IG30014_15_201906290015_01.csv

PTN Ethernet-Port RMON Performance,PORT_BW_UTILIZATION,2019-06-29 20:00:00,33366     

DeviceID,DeviceName,ResourceName,CollectionTime,GranularityPeriod,PORT_RX_BW_UTILIZATION,PORT_TX_BW_UTILIZATION,RXGOODFULLFRAMESPEED,TXGOODFULLFRAMESPEED,PORT_RX_BW_UTILIZATION_MAX,PORT_TX_BW_UTILIZATION_MAX

3174659,H1095,H1095-11-ISM6-1(to ZJBSC-V1),2019-06-29 20:00:00,15,22.08,4.59,,,30.13,6.98

3174659,H1095,H1095-14-ISM6-1(to T6147-V),2019-06-29 20:00:00,15,2.11,10.92,,,4.43,22.45

回答:

读取csv文件时跳过第一行


例如,

package main

import (

"bufio"

"encoding/csv"

"fmt"

"io"

"os"

)

func readSample(rs io.ReadSeeker) ([][]string, error) {

// Skip first row (line)

row1, err := bufio.NewReader(rs).ReadSlice('\n')

if err != nil {

return nil, err

}

_, err = rs.Seek(int64(len(row1)), io.SeekStart)

if err != nil {

return nil, err

}

// Read remaining rows

r := csv.NewReader(rs)

rows, err := r.ReadAll()

if err != nil {

return nil, err

}

return rows, nil

}

func main() {

f, err := os.Open("sample.csv")

if err != nil {

panic(err)

}

defer f.Close()

rows, err := readSample(f)

if err != nil {

panic(err)

}

fmt.Println(rows)

}

输出:

$ cat sample.csv

one,two,three,four

1,2,3

4,5,6

$ go run sample.go

[[1 2 3] [4 5 6]]

$

$ cat sample.csv

PTN Ethernet-Port RMON Performance,PORT_BW_UTILIZATION,2019-06-29 20:00:00,33366

DeviceID,DeviceName,ResourceName,CollectionTime,GranularityPeriod,PORT_RX_BW_UTILIZATION,PORT_TX_BW_UTILIZATION,RXGOODFULLFRAMESPEED,TXGOODFULLFRAMESPEED,PORT_RX_BW_UTILIZATION_MAX,PORT_TX_BW_UTILIZATION_MAX

3174659,H1095,H1095-11-ISM6-1(to ZJBSC-V1),2019-06-29 20:00:00,15,22.08,4.59,,,30.13,6.98

3174659,H1095,H1095-14-ISM6-1(to T6147-V),2019-06-29 20:00:00,15,2.11,10.92,,,4.43,22.45

$ go run sample.go

[[DeviceID DeviceName ResourceName CollectionTime GranularityPeriod PORT_RX_BW_UTILIZATION PORT_TX_BW_UTILIZATION RXGOODFULLFRAMESPEED TXGOODFULLFRAMESPEED PORT_RX_BW_UTILIZATION_MAX PORT_TX_BW_UTILIZATION_MAX] [3174659 H1095 H1095-11-ISM6-1(to ZJBSC-V1) 2019-06-29 20:00:00 15 22.08 4.59 30.13 6.98] [3174659 H1095 H1095-14-ISM6-1(to T6147-V) 2019-06-29 20:00:00 15 2.11 10.92 4.43 22.45]]

$

以上是 读取csv文件时如何跳过第一行? 的全部内容, 来源链接: utcz.com/qa/435943.html

回到顶部