python处理文本文件 提取英文单词看成一个整体_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")

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值