題目:英文本元頻率統計。編寫乙個程式,對給定的字串**現的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 字母頻率 這個字母出現的次...