python第四題 讀取txt提取所有單詞出現頻次


果然!還是沒法繞開正則表達式啊!!!!!!這下接着學習了!!!!!

題目 :任一個英文的純文本文件,統計其中的單詞出現的個數。

代碼是我從別的博客上借鑒的,了解到需要用到的知識點有: 文件讀寫、splitlines()的用法、 re.sub()的用法、原生字符串r''的用法、重新復習字典的用法等等

下邊一個個的分析:

1.文件讀寫:

import sys
# file=open('G:\python文件\poem.txt','r')
# print(file.read())

#下邊是另外一種寫法
#read(size)方法,每次最多讀取size個字節的內容
#調用readline()可以每次讀取一行內容,調用readlines()一次讀取所有內容並按行返回list
# with open('G:\python文件\poem.txt')as f:
# print(f.read(10))

# file=open('G:\python文件\poem.txt','r')
# for line in file.readlines():
# print(line)

#前邊說的是二進制字符 如果是文字呢? 后邊加‘rb’
# file=open('G:\python文件\image.png','rb')
# print(file.read())


#寫文件也是一樣 就是把'r'換成'w'

2.splitlines()方法

返回一個列表,將每一行都寫在列表的一個元素里,可以設置‘\n’是否可見

import sys
with open("G:\python文件\poem.txt") as f:
print(f.read().splitlines())

Programming is fun.
When the "work" is done-
load
if you wanna make your work also fun:
    use Python python python!

結果:

['Programming is fun.', 'When the "work" is done-', 'load ', 'if you wanna make your work also fun:', ' use Python python python!', '']

3. re.sub()的用法  是用來替換字符串:

比如說s1=' abc123cde456 ' 想要將數字都改成222的話 就要用到這個 re.sub('\d+','222',s1)   其中,最重要的是第一個參數,也就是匹配正則表達式

這里有一個知識點是原生字符串 格式就是r'  '  引號里如果有轉義字符串不想被轉義的話 就不必在前邊再加轉義字符了#原生字符串r'' 與轉義符 \

 

s1=r'abc\abc'
print(s1)

s2='abc\\abc'
print(s2)

s3='abc\'nabc'
print(s3)

s4='ab\\\\cd\\\\ef'print(s4)

關於正則表達式,要學習的東西還有很多很多,一定要抽時間把這些東西弄明白!真的很重要!!!
4.字典的用法
dic.setdefault(word.lower(), 0)   這句話的意思是 如果dictionary里邊沒有某word.lower的鍵值對,就添加上 ,默認value是0 而dic[]就是設置value的值
dic[word.lower()]
 
import re
def get_word_frequencies(file_name):
dic = {}
txt = open(file_name, 'r').read().splitlines() #轉化為列表
print(txt)
n=0
for line in txt: #line就是每一行的字符

line = re.sub(r'[.?()!,"/]', ' ', line) #要替換的標點符號,英文字符可能出現的
line = re.sub(r' - ', ' ', line) #替換單獨的‘-’
for word in line.split():
if word[-1] =='-': #當一行的最后一個字符是-的時候,需要跟下一個英文字符串聯起來構成單詞
m=word[:-1]
n=1
break
if n==1:
word=m+word
n=0
print (word)
dic.setdefault(word.lower(), 0) #不區分大小寫 如果鍵不存在於字典中,將會添加鍵並將值設為默認值。
dic[word.lower()] += 1 #dic[]是用來查value的
print(dic) #統計每個單詞出現的次數
get_word_frequencies("G:\python文件\poem.txt")




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM