第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Go 對 csv 文件進行字母排序?

如何使用 Go 對 csv 文件進行字母排序?

Go
寶慕林4294392 2022-05-17 17:56:19
我正在嘗試使用 Go 根據(jù)姓氏(位于第一列)中按字母順序排列具有一系列名稱的 .csv 文件。我已經(jīng)搜索了所有內(nèi)容,但我似乎無法找到一種方法來做到這一點。有沒有辦法做到這一點,同時保持同一行中的其他值?我有三個同名的 .csv 文件,但我必須對它們進行洗牌才能完成我的任務(wù)(隨機餐桌座位算法)。我希望能夠?qū)⑺鼈冎匦掳炊x的字母順序排列,這樣我就可以確定人們不會連續(xù)坐在一起。提前致謝。:)編輯:可能值得展示我用來洗牌的功能:func Shuffle(slice []Person) []Person {r := rand.New(rand.NewSource(time.Now().Unix()))ret := make([]Person, len(slice))n := len(slice)for i := 0; i < n; i++ {    randIndex := r.Intn(len(slice))    ret[i] = slice[randIndex]    slice = append(slice[:randIndex], slice[randIndex+1:]...)}return retPerson[] 切片只是一個包含名字和姓氏的結(jié)構(gòu)。
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

Go 的sort包附帶了一個很好的例子。請參閱修改后的實現(xiàn),該實現(xiàn)應(yīng)該可以滿足您的要求。


package main


import (

    "encoding/csv"

    "fmt"

    "io"

    "log"

    "sort"

    "strings"

)


// Unsorted sample data

var unsorted = `Balaam,Wileen,Saint Louis

Meachan,Lothaire,Lefengzhen

Scoggin,Ivonne,Pag

Hawarden,Audrye,Leiria

Claypool,Biddy,Maiorca

Stanford,Douglas,Báguanos

Petriello,Yvor,Obryte

Hatter,Margette,Luoping

Pepall,Linzy,Hucun

Carter,Kit,Parungjawa

`


type Person struct {

    Lastname  string

    Firstname string

    City      string

}


// Create a new Person record from a given string slice

func NewPerson(fields []string) (p Person, err error) {

    if len(fields) < 3 {

        return p, fmt.Errorf("not enough data for Person")

    }

    p.Lastname = fields[0]

    p.Firstname = fields[1]

    p.City = fields[2]

    return

}


// ByLastname implements sort.Interface for []Person based on the Lastname field.

type ByLastname []Person


func (a ByLastname) Len() int           { return len(a) }

func (a ByLastname) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }

func (a ByLastname) Less(i, j int) bool { return a[i].Lastname < a[j].Lastname }


func main() {

    // Open unsorted CSV from string

    r := csv.NewReader(strings.NewReader(unsorted))


    var people []Person


    for {

        // Read CSV line by line

        record, err := r.Read()

        if err == io.EOF {

            break

        }

        if err != nil {

            log.Fatal(err)

        }


        // Create Person from line in CSV

        person, err := NewPerson(record)

        if err != nil {

            continue

        }

        people = append(people, person)

    }


    // Sort CSV by Lastname

    sort.Sort(ByLastname(people))


    // Print to stdout

    for _, p := range people {

        fmt.Printf("%s %s from %s\n", p.Lastname, p.Firstname, p.City)

    }


    // Here you would write your CSV

}



查看完整回答
反對 回復(fù) 2022-05-17
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號