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")



posted @ 2018-01-31 14:01  BUSYGIRL  阅读(3356)  评论(0编辑  收藏  举报