英文本元頻率統計 python實現

2021-09-25 12:34:53 字數 1870 閱讀 3810

題目:英文本元頻率統計。編寫乙個程式,對給定的字串**現的a~z字母頻率分析,忽略大小寫,採用降序方式輸出。

**:

#把每個元素後面都加乙個空格

with open('11.txt', 'r+') as filehandler:

with open('22.txt','w') as filehandler2:

filehandler2.write(''.join([f+' ' for fh in filehandler for f in fh]))

#把大寫變為小寫

def times():

txt = open("22.txt","r").read()

txt = txt.lower()

for ch in ',,。.::』—!':

txt = txt.replace(ch," ") #將文字中特殊文字元替換為空格

return txt

total = times()

letters = total.split()

counts = {}

for letter in letters:

counts[letter] = counts.get(letter,0) + 1

items = list(counts.items())

items.sort(key=lambda x:x[1],reverse = true)

for i in range(20):

letter,count = items[i]

print("".format(letter,count))

**如下:

def processline(line, charactercounts):

for character in line:

if ord(character) in range(97, 123): #ord()函式主要用來返回對應字元的ascii碼

charactercounts[character] += 1

#建立字母字典

def createcharactercounts(charactercounts):

for i in range(97, 123):

charactercounts[chr(i)] = 0

def main():

#使用者輸入乙個檔名

# filename = input("enter a filename:").strip()

filename = "11.txt"

infile = open(filename, "r")

#建立用於計算詞頻的空字典

charactercounts = {}

#初始化字典鍵值

createcharactercounts(charactercounts)

for line in infile:

processline(line.lower(), charactercounts)

#從字典中獲取資料對

pairs = list(charactercounts.items())

#列表中的資料對交換位置,資料對排序

items = [[x,y] for (y,x) in pairs]

items.sort(reverse=true)

#輸出count個數詞頻結果

for i in range(len(items)):

print(items[i][1]+"\t"+str(items[i][0]))

infile.close()

#呼叫main()函式

if __name__ == '__main__':

main()

python中的中英文本元統計

英語字元和中文字元的區別在於 大小寫字元和字元個數 中文中是乙個詞語 統計英語字元 def gettext txt open halmet.txt r read txt txt.lower 文中所有英語小寫 for ch in txt txt.replace ch,return txt halmet...

中英文本串中統計英文本元個數

工作中遇到如下問題,搜尋網路資源得以解決,記錄以供參考。問題 在一段中英文混合的字串中,通過關關鍵字查詢到某位置p。需要擷取p前後一定長度字元,構成乙個新的字串。問題解析 由於是中貢混合的字串,當向前後擷取長度不當時會出現擷取到中文半個字的情況。面引起出現亂碼的情況。方法 首先確定字串的編碼格式,由...

統計英文文字字母出現頻率

使用者需求 英語的26 個字母的頻率在一本 中是如何分布的?某型別文章中常出現的單詞是什麼?某作家最常用的詞彙是什麼?飄 中最常用的短語是什麼,等等。題目要求 1 輸出某個英文文字檔案中 26 字母出現的頻率,由高到低排列,並顯示字母出現的百分比,精確到小數點後面兩位。2 字母頻率 這個字母出現的次...