[python]《天龙八部》文本处理

news/2025/3/19 5:30:07/

1、读取每章标题
2、统计人物出现的次数
3、将1和2输出为txt和excel

# 处理小说文本
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
import jieba
import re
from gensim import corpora,models,similarities
#读入数据文件
with open(r'D:\\天龙八部.txt', "r") as f:  # 打开文件data = f.read()  # 读取文件
#分割字符串
data = data.split('\n\n') #根据文本无用内容来进行分隔
data.remove('')  #处理后的文章在一个列表里面
for i in range(len(data)):data[i] = re.sub('萧峰','乔峰',data[i])  ##因为原文中萧峰和乔峰是同一个人,用正则化表达式将萧峰替换成乔峰data[i] = re.sub('慕容先生','慕容博',data[i])  #将慕容先生称呼替换成慕容博data[i] = re.sub('慕容公子','慕容复',data[i]) 
data_str = ''.join(data)  #以字符串方式储存
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
# 处理人物文本
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
with open(r'D:\\天龙八部人物名称.txt', "r", encoding = 'UTF-8') as f:  # 打开文件dataname = f.read()  # 读取文件
dataname = dataname.split('\u2002')  #根据无用内容分割字符串,处理后装在一个列表里面
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————# 统计章标题
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
biaotilist = [] #装标题名字
for i in range(len(data)):   #len(data)等于50biaotilist.append(re.findall(r'(.*)\n', data[i][:50])[0]) #运用正则化表达式提取出标题
print("天龙八部共%s章,标题如下:"%len(biaotilist))
for j in range(len(biaotilist)):print(biaotilist[j])
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————print("\n")
# 小说的主角
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
for i in range(len(dataname)):dataname[i] = ''.join(re.findall('[\u4e00-\u9fa5]',dataname[i]))#运用正则化表达式来提取名字
data_name = dataname[:]#这是为了后面操作成字符串形式写的
#统计每个人出现的次数
for j in range(len(dataname)):num = 0    #计数器for i in range(len(data)):num = num + len(re.findall(dataname[j],data[i]))#正则化判断data中是否存在dataname中名字,有就+1dataname[j] = [str(dataname[j]), num] #变成二维列表形式
dataname=dict(dataname)#将二维列表变成字典
dataname=sorted(dataname.items(), key=lambda a: a[1], reverse=True) #按高到低顺序,按照列表中第二个元素排序,以字典形式储存      
print("人物以及人物出现的次数:")
for hang in range(169):for lie in range(2):print(dataname[hang][lie],end=" ")print(" ")
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
# 输出Excel和Txt文件
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————
list1 = biaotilist
output = open('每章标题.xls','w',encoding='gbk')
output.write('章节\n')
for row in list1:rowtxt = "{} {}".format(row[0:4],row[6:len(row)])output.write(rowtxt)output.write('\n')
output.close()
list1 = biaotilist
output = open('每章标题.txt','w',encoding='gbk')
output.write('章节\n')
for row in list1:rowtxt = "{} {}".format(row[0:4],row[6:len(row)])output.write(rowtxt)output.write('\n')
output.close()
# ············································································································
list1=dataname
output=open('人物名及出现次数.xls','w',encoding='gbk')
output.write("人物名\t出现次数\n")
for i in range(len(list1)):for j in range(len(list1[i])):output.write(str(list1[i][j]))    #write函数不能写int类型的参数,所以使用str()转化output.write('\t')   #相当于Tab一下,换一个单元格output.write('\n')       #写完一行立马换行
output.close()
list1 = dataname
output = open('人物名及出现次数.txt','w',encoding='gbk')
output.write('人物名,出现次数\n')
for row in list1:rowtxt = '{},{}'.format(row[0],row[1])output.write(rowtxt)output.write('\n')
output.close()
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————

http://www.ppmy.cn/news/846647.html

相关文章

天龙八部源码描述

天龙八部(武侠世界)的源码很可能是天龙八部代码流出后改写的,因为在看了代码中可以找到一些证据,整个客户端分为:一个是编辑器,一个是客户端,采用OGREcegui自写的简单的物理碰撞检测FMOD自写的网络库。 服务器端代码目…

天龙八部服务器端Lua脚本系统

一、Lua脚本功能接口 1. LuaInterface.h/.cpp声明和实现LuaInterface。 LuaInterface成员如下: //脚本引擎 FoxLuaScript mLua ; //注册器 LuaCFuncRegister mFuncRegister; //场景关联 Scene* mOwner; //已经读取的脚本表 IDTable m_ScriptTable ; 主要方…

天龙八部中的扫地僧的真实身份

天龙八部中的扫地僧被很多人认为是金庸小说中的第一高手。       1、扫地僧出场时,“一个身穿青袍的枯瘦僧人拿着一把扫帚,正在弓身扫地。这僧人年纪不少,稀稀疏疏的几根长须已然全白”,又说他来了“不知是四十二年&#xf…

天龙源码框架分析_天龙八部源码描述【转】

天龙八部(武侠世界)的源码很可能是天龙八部代码流出后改写的,因为在看了代码中可以找到一些证据,整个客户端分为:一个是编辑器,一个是客户端,采用OGRE+cegui+自写的简单的物理碰撞检测+FMOD+自写的网络库。 服务器端代码目前没仔细关注 客户端总体的描述如下: UI系统 CEG…

天龙八部中无名老僧的由来

整理:WangYugang 日期:15-Dec-2004 出处:http://blog.csdn.net/wangyugang版本:0.01 武侠小说看到了这个份上也算是祖师级的高手了,向作者致敬!闲来慢慢品尝! 文章内容: 话说金庸老先生穷半生之…

天龙八部 找怪物ID

游戏:天龙八部 版本:0.35.0691 主要工具:ODCEGE 开发环境:VS2005 作者:勿在浮沙筑高 转载文章请标明出处http://bbs.bpsend.com要点:从怪物的名字着手,找到怪物的各种信息,分析出游戏定义的描述…

天龙八部资源提取源代码

网上找的《天龙八部》资源读取&#xff0c;先拷贝下来存储在这里&#xff0c;希望有读取文件夹的功能&#xff01;最近一直在愁读取文件夹 #include <stdio.h>#include <string>#include <windows.h>#include <shlobj.h>using namespace std;int do16b…

也谈《天龙八部》

金庸老先生的经典巨作《天龙八部》又被翻拍了一次&#xff0c;随着电视剧的播映&#xff0c;网络上不少吐槽的声音。无论是对于演员的选择&#xff0c;场景布置&#xff0c;道具选择等等都成了网友们吐槽的目标。其实&#xff0c;这些都是很正常的。一直以来电视剧的拍摄都会面…