欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Go語言統(tǒng)計(jì)文件中每個(gè)字母出現(xiàn)頻率的方法

 更新時(shí)間:2025年07月23日 09:05:19   作者:程序員愛釣魚  
這篇文章主要介紹了如何使用Go語言統(tǒng)計(jì)文件中每個(gè)字母出現(xiàn)頻率 的完整內(nèi)容,本案例適合用來練習(xí)文件讀取、字符處理、map統(tǒng)計(jì)等基礎(chǔ)技能,感興趣的小伙伴跟著小編一起來看看吧

案例目標(biāo)

讀取一個(gè)本地文本文件,統(tǒng)計(jì)并打印出其中每個(gè)英文字母(忽略大小寫)出現(xiàn)的次數(shù)和頻率。

應(yīng)用場景

  • • 文本分析、自然語言處理前的預(yù)處理
  • • 編寫字頻統(tǒng)計(jì)工具
  • • 簡化數(shù)據(jù)分析或可視化處理的前置步驟

涉及知識(shí)點(diǎn)

  • • 使用 os.Open() 讀取文件
  • • bufio.Scanner 按行讀取
  • • 字符串遍歷與判斷
  • • 使用 map[rune]int 統(tǒng)計(jì)頻率
  • • 轉(zhuǎn)換大小寫 unicode.ToLower

示例代碼:統(tǒng)計(jì)字母頻率

package main

import (
    "bufio"
    "fmt"
    "os"
    "unicode"
)

func main() {
    filePath := "sample.txt"

    // 打開文件
    file, err := os.Open(filePath)
    if err != nil {
        fmt.Println("無法打開文件:", err)
        return
    }
    defer file.Close()

    // 用于存儲(chǔ)每個(gè)字母出現(xiàn)的次數(shù)
    frequency := make(map[rune]int)
    totalLetters := 0

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        line := scanner.Text()
        for _, ch := range line {
            if unicode.IsLetter(ch) {
                ch = unicode.ToLower(ch)
                frequency[ch]++
                totalLetters++
            }
        }
    }

    // 打印結(jié)果
    fmt.Println("字母頻率統(tǒng)計(jì):")
    for ch := 'a'; ch <= 'z'; ch++ {
        count := frequency[ch]
        if count > 0 {
            percentage := float64(count) / float64(totalLetters) * 100
            fmt.Printf("%c: %d (%.2f%%)\n", ch, count, percentage)
        }
    }
}

示例文本內(nèi)容(sample.txt)

Go is expressive, concise, clean, and efficient.
Its concurrency mechanisms make it easy to write programs.

執(zhí)行結(jié)果示例

字母頻率統(tǒng)計(jì):
a: 5 (4.85%)
c: 7 (6.80%)
d: 2 (1.94%)
e: 10 (9.71%)
f: 2 (1.94%)
g: 1 (0.97%)
...
t: 8 (7.77%)
w: 1 (0.97%)

技術(shù)說明

函數(shù)說明
os.Open()打開文件
bufio.NewScanner()按行掃描文本
unicode.IsLetter()判斷字符是否為英文字母
unicode.ToLower()轉(zhuǎn)換為小寫字母以便統(tǒng)計(jì)統(tǒng)一
map[rune]int使用字符為鍵的字典進(jìn)行計(jì)數(shù)

小結(jié)

這個(gè)案例幫助你掌握了如何在 Go 中進(jìn)行文本分析,特別是字母頻率統(tǒng)計(jì)。這是數(shù)據(jù)清洗和自然語言處理中的常見需求。

以上就是使用Go語言統(tǒng)計(jì)文件中每個(gè)字母出現(xiàn)頻率的方法的詳細(xì)內(nèi)容,更多關(guān)于Go統(tǒng)計(jì)字母出現(xiàn)頻率的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang中的select關(guān)鍵字用法總結(jié)

    golang中的select關(guān)鍵字用法總結(jié)

    這篇文章主要介紹了golang中的select關(guān)鍵字用法總結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • GoLang的sync.WaitGroup與sync.Once簡單使用講解

    GoLang的sync.WaitGroup與sync.Once簡單使用講解

    sync.WaitGroup類型,它比通道更加適合實(shí)現(xiàn)這種一對多的goroutine協(xié)作流程。WaitGroup是開箱即用的,也是并發(fā)安全的。同時(shí),與之前提到的同步工具一樣,它一旦被真正的使用就不能被復(fù)制了
    2023-01-01
  • Golang字符串拼接的性能以及原理詳解

    Golang字符串拼接的性能以及原理詳解

    最近在做性能優(yōu)化,有個(gè)函數(shù)里面的耗時(shí)特別長,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在golang里面其實(shí)有很多種實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Golang字符串拼接的性能以及原理的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 解析Go語言編程中的struct結(jié)構(gòu)

    解析Go語言編程中的struct結(jié)構(gòu)

    這篇文章主要介紹了Go語言編程中的struct結(jié)構(gòu),是Go語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • Go FX框架用法小結(jié)

    Go FX框架用法小結(jié)

    Go FX是一個(gè)功能強(qiáng)大的框架,通過依賴注入和生命周期管理來簡化應(yīng)用的構(gòu)建與維護(hù),本文就來介紹一下Go FX框架用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Go基本數(shù)據(jù)類型與string類型互轉(zhuǎn)

    Go基本數(shù)據(jù)類型與string類型互轉(zhuǎn)

    本文主要介紹了Go基本數(shù)據(jù)類型與string類型互轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Golang編程并發(fā)工具庫MapReduce使用實(shí)踐

    Golang編程并發(fā)工具庫MapReduce使用實(shí)踐

    這篇文章主要為大家介紹了Golang并發(fā)工具庫MapReduce的使用實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • golang使用go test輸出單元測試覆蓋率的方式

    golang使用go test輸出單元測試覆蓋率的方式

    單元測試覆蓋率是衡量代碼質(zhì)量的一個(gè)重要指標(biāo),重要的代碼文件覆蓋率應(yīng)該至少達(dá)到80%以上,Java 可以通過JaCoCo 統(tǒng)計(jì)覆蓋率,那么go 項(xiàng)目如何進(jìn)行代碼覆蓋率測試呢,本文將給大家詳細(xì)的介紹一下golang使用go test輸出單元測試覆蓋率的方式,需要的朋友可以參考下
    2024-02-02
  • Go1.18新特性之泛型使用三步曲(小結(jié))

    Go1.18新特性之泛型使用三步曲(小結(jié))

    本文主要介紹了Go1.18新特性之泛型,是Go1.18的新特性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Go|使用Options模式和建造者模式創(chuàng)建對象實(shí)戰(zhàn)

    Go|使用Options模式和建造者模式創(chuàng)建對象實(shí)戰(zhàn)

    這篇文章主要介紹了Go使用Options模式和建造者模式創(chuàng)建對象實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評論