Python 文本处理 (1.导出书籍目录 2.统计每一章节频度最高的词)

文本处理

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import re

f=open('d:/八十天环游地球.txt','r')
f2=open('d:/八十天环游地球new.txt','w')
f3=open('d:/八十天环游地球-章节.txt','w')

for i in f:
    i=i.rstrip() #去掉右端空格
    i=re.sub('<\/?.*>','',i) #处理掉Html的标签
    i=re.sub('(&quot;)','\"',i)#&quot; ---》 "
    i=re.sub('(99lib.t)','',i) #处理掉99lib.t
    if len(i.strip())>0: #空行不做处理
        f2.write(i+'\n')
        j=i.strip()#两端空格处理,开始判断是否是章节标题行
        if j.split()[0][0]=='第' and '章' in j.split()[0]:
            f3.write(j+'\n')
            
        
f2.close()
f3.close()
f.close()    
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 21 22:33:33 2021

@author: 焜曦
"""
# 统计每章中出现最多的词语


import jieba
f=open("D:/Desktop/Python作业/文本处理/80天环游地球/八十天环游地球(处理).txt",'r')
datas=f.readlines()   # datas 以列表的形式存储
l=[] #存放各章节的标题的行号

for i in range(len(datas)): # i in range 从0开始的行号
    data=datas[i].strip()
    if len(data)>0: # 如果data不是空字符行
        ll=data.split()[0]
        if ll[0]=='第' and '章' in ll:
            l.append(i)

# print(l) l存储各行

stopWords=['先生','他们','福克','路路通','没有','克斯']

for i in range (len(l)):
    if i!=len(l)-1: #如果不是最后一章
        data=datas[l[i]+1:l[i+1]-1]
    else:
        data=datas[l[i]+1:]
    #str.join(item) 
    #以str分割这个item
    #这里实际上把列表转换成了字符串
    data=''.join(data)
    # jieba.cut() 中文分词库
    # 将句子中的文字分割开
    words=jieba.cut(data)  # words 是个列表 
    fre={}
    for w in words:
        if len(w)<2 or w in stopWords:
            continue
        else:
            #dict.get(key, default=none) 返回指定的键值
            #key --字典中要查的键
            #default --如果指定的键不存在,返回的该默认值
            fre[w]=fre.get(w,0)+1
    
    lis=list(fre.items())
    #对列表的元组进行排序
    #key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    #这里指定迭代对象的第二个参数进行递减排序
    lis.sort(key=lambda x:x[1], reverse=True)
    print(datas[l[i]].strip().split()[0],lis[0][0],lis[0][1])

f.close()
           

  • 上面的代码是上课老师写的,初学python 加了点注释
  • 代码效率可能不算高效,记录一下
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值