用Python摘抄《大道争锋》中的诗句

本文记录了一位程序员使用Python编程从《大道争锋》小说中智能筛选并摘抄诗句的过程。通过分析文本特点,确定诗句由双引号包围且字数工整,利用Python进行数据处理,成功筛选出大部分诗句,最终得到一个高质量的诗集。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

前言

随便记一下写这个程序的过程,对新学到的东西做个笔记。

一直很喜欢《大道争锋》这本小说,尤其是误道者文字间的古风韵味以及时不时来一首颇具仙风道骨的诗歌。于是在二刷之后有了将这些诗歌做个摘抄的想法,奈何《大道争锋》全文700万字,要再刷一次去摘抄诗句的工作量不小,所以我就有了用Python帮我摘抄的想法。

数据分析

首先,程序的判定非常死板,所以我们的原文资源一定要好,不要有什么奇奇怪怪的字符或者标点符号有问题。

之后我们观摩一下目标数据:诗句的特征。
在这里插入图片描述
在这里插入图片描述
我们机智地发现,所有诗句都是由书中人吟诵出来的,所以诗句都是由双引号括起来的。同时,诗句的字数都很工整,均为五个字五个字或者七个字七个字。

(本来还想加一个判断押韵,连pypinyin都装好了,但是押韵的判断并没有想象中的简单,而之前的判断条件对于小说文本来说已经足够严格,漏网之鱼很少,所以就没有加)

开始编程

打开文件

首先把文本文件打开,由于是中文,使用了UTF-8编码,所以不能直接打开,否则只能读出一堆乱码。

f=open('DDZF.txt','r',encoding='utf8')

其中,'DDZF.txt'是要打开的文件名称,'r'表示只读,encoding='utf8'则是文件对应的解码。

更多的读写模式指令详见下图:
在这里插入图片描述

筛选出所有人物对话

打开了文件之后,还需要把文件的内容读进来,因为整个文本对于计算机来说比较小,所以这里我选择了f.read()直接把所有文本读入,之后还会有f.readline()f.readlines()等文件读入函数。

主要就是判断引号括起来的部分,比较简单,用一个flag变量就解决了,要做笔记的主要是对汉字的判断:

def is_Chinese(ch):
    return '\u4e00'<=ch<='\u9fff'

至于符号的判断,Python实际有更简洁的写法,我用的则是Python版的C艹写法,在后面会有改进。

另外,为了方便判断,我将所有符号都替换为了'*',在最后输出的时候会重新还原。

代码:

#筛选出人物说的话,替换其中标点
fuhao=[',','。','?','!']
def is_fuhao(ch):
    for fh in fuhao:
        if ch==fh:
            return True
def is_Chinese(ch):
    return '\u4e00'<=ch<='\u9fff'
txt=[]
tmp=[]
flag=0
for ch in f.read():
    if ch=='“':
        flag=1
    if is_Chinese(ch) and flag==1:
        tmp.append(ch)
    if is_fuhao(ch) and flag==1:
        tmp.append('*')
    if ch=='”':
        flag=0
        txt.append("".join(tmp))
        tmp=[]
f.close()

存入的时候,我把tmp从列表转换为了字符串,用到的语句为"".join(),其中双引号括起来的部分为拼接字符串时,列表中各个元素之间的间隔符号,由于这里是中文拼接,不需要间隔,直接为空就行了。括号里的内容则是要转化的列表名称。

其实这是个小失误,应该直接把tmp以列表的形式appendtxt里,将它转化为字符串其实是多此一举了。

筛选出字数符合要求的句子

前面也说了,因为是正常的小说文本,用字数来筛选已经足够严格,我们只需要判断这些人物说的话里有没有五个字五个字一组或者七个字七个字一组的就已经足够把诗句筛选出来了。

类似的,用f=open('out.txt','w')打开/创建一个输出文件,然后用f.write()写入文件。这里就可以看到,为了将字符串里的'*'修正回来,我先转成了列表,修改完再转回字符串,就是因为之前的“多此一举”。

#处理出字数符合要求的句子
def reload(s):
    flag=0
    for i in range(len(s)):
        if s[i]=='*':
            if flag:
                s[i]='。'
            else :
                s[i]=','
            flag=1-flag
    return "".join(s)
f=open('out.txt','w')
for sen in txt:
    lenth=0
    poem=1
    cntfh=0
    for ch in sen:
        lenth+=1
        if ch=='*':
            cntfh+=1
            if lenth!=8 and lenth!=6:
                poem=0
                break
            lenth=0
    if poem and (cntfh==4 or cntfh==6 or cntfh==8):
        f.write(reload(list(sen)))
        f.write('\n')
f.close()

代码运行效果

他人以鼎劝莫争,我却以鼎淬元真。凡心妄演天机道,一番算计空付樽。
摩天弄云霭,食气吞仙斋。浩然朔罡风,决荡天门开。
足踏仙云游八荒,银河星汉渡险隘。若要问那长生果,有缘可来补天斋。
混沌辟生无贵贱,岂叫神人坐金殿。若得一口仙灵气,敢上九天争日月。
我本凡人磨岁寿,困拘庐中不知愁。忽闻仙人阁上坐,蓬莱山外寻天楼。
七星束阳袍,百炼火中烧。莫道形不伤,人劫最难逃。
长河奔流入海西,东来水分清浊气。漫渡急浪覆云履,脚踏罡斗握玄机。
法象竞日出,乾坤定宏图。今日脱劫去,飞身上天庐。
萤流举轻舞,星汉去寂心。横江照夜火,万里烛幽冥。
二十年来藏剑锋,忽起长歌神鬼惊。大道苍茫斩歧路,笑看沧海听雷音。
百炼功成道家果,乾坤自在手中握。日月轮转星流火,瞒天夺寿劫法螺。万浪千礁齐踏破,长生无悔笑蹉跎。
清风扶我上九天,此去浮云织彩间。由来逍遥是神仙,一梦回首已千年。
恩师飞升前,曾让我带话与你。说今时不同往日,能放手便放手吧。
阴阳两气参性命,精元藏胸演五行。神意巍然攀山岭,擎天柱里炼罡英。九霄云中鸣剑音,扫荡妖氛涤气净。心有冲天龙虎意,倒海翻江还天青。
双月映卿水,倾城何独怨。对影如不见,画镜照寂怜。
花愁岁月催色残,谁人听怨道哀怜。漫起香阵蔽星汉,罗带抟风改天颜。
灵珠牝牡化界方,一十六法俱收藏。采撷清气度真法,反演星斗会天象。
杀便杀了吧,把尸体留着。峨山派若有人来,交给他们就是了。
乾坤两分气化真,五龙五行炼法身。身若天柱立昆仑,心盘海山镇劫尘。今朝神屋诛天妖,他日天外斩鬼神。
今日乘风去,舍身了尘扰。明朝得金丸,再入神仙道。
龙头于北饮苍澜,龙尾在南戏寒山。乾坤一动风云变,造化无情天道玄。
龙渊倒悬潮升烟,大滔横流三千年。唤得清澜洗日月,长空一相水齐天。
不堕轮回入大千,心传一道在人间。愿起一剑杀万劫,无情换作有情天。
驱鬼惑人为下道,呼风唤雨为上道。养生调元为小道,长生逍遥为大道。
此身入道五百载,志气长存星斗移。当啸长歌舒胸臆,云霄一气动天地。
少年轻负剑,玄崖寻仙楼。一朝得闻道,畅然天地游。平生舒快意,狂笔写春秋。长生非我愿,只解心中忧。
仰吞初阳火,炼得天魔身。倒卷地灵气,相成阴中神。
一播阳火转朱丹,点破玄冥赤火鸾。红尘解炼去凡身,金阳吐灿开霄汉。
霍真人成就法相,实为我溟沧兴事。以恩师之见,那法相当作何称。
守得灵心见月明,四海潮冲蜕鳍鳞。神通本是石人授,玉磬敲动龙门音。
十万心界量玄关,一剑横光丈千秋。只手拨得天惊弦,搅彻周天乱星汉。
人间本来多磨难,百砺心劫方圆满。采得一风生玄翼,拂去尘身踏仙关。
独上万山巅,孤扣大道钟。千波留不住,淡看云匆匆。衣角拭顽心,尘落显真容。任他风雷雨,鹤徊九云中。
方才我已试过了,这岛上煞气极重。会消磨灵机,可无法吐纳调息。
本是草莽一生灵,石人解玄方辨情。身散气化心未休,一脉当传万载名。
虚空落神精,化气散微尘。功成六转境,百劫不磨身。嘘呵天地气,一力定乾坤。
小舟渡幼鸿,扶翼入云岸。寒山乌云暖,执剑掌幽谭。苍海青天外,鸣声阵阵来。蓦然轻风雨,云破雁飞还。
举手撑天岳,足量九地宽。含烟定四海,吐气动万山。
青桐山下日月藏,斩却前身渡玄航。龙血炼气万化生,神目一开转阴阳。
十二重关载道传,紫气胎里种玄元。摘落真花见根果,拭去凡尘天外仙。
在言语之前,可立下法契。你不放心我,我亦不会放心你。
一气鸿濛演乾坤,问道诸寰斩二身。万法不沾神自定,与天同寿洞玄真。
元海凭舟渡灵真,造化为炉炼法身。一气贯通诸天界,乾坤同和演玄神。
拂清宙黯见神空,始知两界此源同。力撼周宇破天壁,终从一元道法宏。
玄波瑶台服灵种,凝光映霄见明空。甘露洗玉含清丹,天河流裳仙影从。
念成虚空照心景,意作金炉筑玄经。一言可定天地法,身举清光兴万灵。
浑中鉴真开神目,气意显冲散龙图。身去诸天问玄法,从此不言大道孤。
正气浩荡人法宏,齐诵道章九洲同。清阳悬空临绝顶,明照天下万景从。
我听你方才言论,似论及栖霞仙子。观你们行途匆匆,又是要往哪里去。
会炼诸空渡世人,名称太上大道尊。莫道青天无始终,造化门中神常存。
昔闻上法曾授命,才得天火炼真金。长歌一曲问世情,只斩凡身不斩心。
两世持存含灵珠,万般磨炼后人书。洗去心垢抛旧身,天人自此无殊途。
避绝万劫心在前,虚空常渡化未先。往来过去皆落意,神横诸世气倾天。
万劫渡磨入世身,诸常洗却旧顽真。道本无名神自主,莲台座上又一人。
无心亦无定,无常亦无名。神空一意转,不变是顽精。
尘心不觉难自悟,辟开人间通天路。惟愿众生皆长生,穹霄万古执道主。
万顷仙波去,千湖返灵光。玄机天地生,乾坤书道章。

共筛选出57首诗,其中6只巧合而成的漏网之鱼,准确率有90%,由于数据量较小,可以采用人工剔除的办法,得到最终结果:

他人以鼎劝莫争,我却以鼎淬元真。凡心妄演天机道,一番算计空付樽。
摩天弄云霭,食气吞仙斋。浩然朔罡风,决荡天门开。
足踏仙云游八荒,银河星汉渡险隘。若要问那长生果,有缘可来补天斋。
混沌辟生无贵贱,岂叫神人坐金殿。若得一口仙灵气,敢上九天争日月。
我本凡人磨岁寿,困拘庐中不知愁。忽闻仙人阁上坐,蓬莱山外寻天楼。
七星束阳袍,百炼火中烧。莫道形不伤,人劫最难逃。
长河奔流入海西,东来水分清浊气。漫渡急浪覆云履,脚踏罡斗握玄机。
法象竞日出,乾坤定宏图。今日脱劫去,飞身上天庐。
萤流举轻舞,星汉去寂心。横江照夜火,万里烛幽冥。
二十年来藏剑锋,忽起长歌神鬼惊。大道苍茫斩歧路,笑看沧海听雷音。
百炼功成道家果,乾坤自在手中握。日月轮转星流火,瞒天夺寿劫法螺。万浪千礁齐踏破,长生无悔笑蹉跎。
清风扶我上九天,此去浮云织彩间。由来逍遥是神仙,一梦回首已千年。
阴阳两气参性命,精元藏胸演五行。神意巍然攀山岭,擎天柱里炼罡英。九霄云中鸣剑音,扫荡妖氛涤气净。心有冲天龙虎意,倒海翻江还天青。
双月映卿水,倾城何独怨。对影如不见,画镜照寂怜。
花愁岁月催色残,谁人听怨道哀怜。漫起香阵蔽星汉,罗带抟风改天颜。
灵珠牝牡化界方,一十六法俱收藏。采撷清气度真法,反演星斗会天象。
乾坤两分气化真,五龙五行炼法身。身若天柱立昆仑,心盘海山镇劫尘。今朝神屋诛天妖,他日天外斩鬼神。
今日乘风去,舍身了尘扰。明朝得金丸,再入神仙道。
龙头于北饮苍澜,龙尾在南戏寒山。乾坤一动风云变,造化无情天道玄。
龙渊倒悬潮升烟,大滔横流三千年。唤得清澜洗日月,长空一相水齐天。
不堕轮回入大千,心传一道在人间。愿起一剑杀万劫,无情换作有情天。
驱鬼惑人为下道,呼风唤雨为上道。养生调元为小道,长生逍遥为大道。
此身入道五百载,志气长存星斗移。当啸长歌舒胸臆,云霄一气动天地。
少年轻负剑,玄崖寻仙楼。一朝得闻道,畅然天地游。平生舒快意,狂笔写春秋。长生非我愿,只解心中忧。
仰吞初阳火,炼得天魔身。倒卷地灵气,相成阴中神。
一播阳火转朱丹,点破玄冥赤火鸾。红尘解炼去凡身,金阳吐灿开霄汉。
守得灵心见月明,四海潮冲蜕鳍鳞。神通本是石人授,玉磬敲动龙门音。
十万心界量玄关,一剑横光丈千秋。只手拨得天惊弦,搅彻周天乱星汉。
人间本来多磨难,百砺心劫方圆满。采得一风生玄翼,拂去尘身踏仙关。
独上万山巅,孤扣大道钟。千波留不住,淡看云匆匆。衣角拭顽心,尘落显真容。任他风雷雨,鹤徊九云中。
本是草莽一生灵,石人解玄方辨情。身散气化心未休,一脉当传万载名。
虚空落神精,化气散微尘。功成六转境,百劫不磨身。嘘呵天地气,一力定乾坤。
小舟渡幼鸿,扶翼入云岸。寒山乌云暖,执剑掌幽谭。苍海青天外,鸣声阵阵来。蓦然轻风雨,云破雁飞还。
举手撑天岳,足量九地宽。含烟定四海,吐气动万山。
青桐山下日月藏,斩却前身渡玄航。龙血炼气万化生,神目一开转阴阳。
十二重关载道传,紫气胎里种玄元。摘落真花见根果,拭去凡尘天外仙。
一气鸿濛演乾坤,问道诸寰斩二身。万法不沾神自定,与天同寿洞玄真。
元海凭舟渡灵真,造化为炉炼法身。一气贯通诸天界,乾坤同和演玄神。
拂清宙黯见神空,始知两界此源同。力撼周宇破天壁,终从一元道法宏。
玄波瑶台服灵种,凝光映霄见明空。甘露洗玉含清丹,天河流裳仙影从。
念成虚空照心景,意作金炉筑玄经。一言可定天地法,身举清光兴万灵。
浑中鉴真开神目,气意显冲散龙图。身去诸天问玄法,从此不言大道孤。
正气浩荡人法宏,齐诵道章九洲同。清阳悬空临绝顶,明照天下万景从。
会炼诸空渡世人,名称太上大道尊。莫道青天无始终,造化门中神常存。
昔闻上法曾授命,才得天火炼真金。长歌一曲问世情,只斩凡身不斩心。
两世持存含灵珠,万般磨炼后人书。洗去心垢抛旧身,天人自此无殊途。
避绝万劫心在前,虚空常渡化未先。往来过去皆落意,神横诸世气倾天。
万劫渡磨入世身,诸常洗却旧顽真。道本无名神自主,莲台座上又一人。
无心亦无定,无常亦无名。神空一意转,不变是顽精。
尘心不觉难自悟,辟开人间通天路。惟愿众生皆长生,穹霄万古执道主。
万顷仙波去,千湖返灵光。玄机天地生,乾坤书道章。

这或许是全网最全《大道争锋》诗集?[doge]

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

代码下载链接: https://pan.quark.cn/s/a4b39357ea24 iSecure Center综合安防管理平台配置手册V2.0最新完整版。综合安防管理平台是一个集成了多种功能的智能化系统,通过接入视频监控、停车场、门禁以及报警检测等设备,达成安防信息化集成与联动。以电子地图作为核心载体,融合各类安防设备,达成安防信息化集成与联动。 【海康威视iSecure Center综合安防管理平台配置手册 V2.0.0】是专门针对该公司的安防管理系统而编写的详细指南。iSecure Center是一个集成化、智能化的解决方案,其目标是通过整合视频监控、停车场管理、门禁控制和报警系统等多个安全子系统,达成全面的安防信息化集成与联动。平台的核心作用是借助电子地图作为基础,整合各种安防功能,以提供高效且全面的安全监控和管理。 手册中明确指出,iSecure Center的配置和使用仅限于海康威视HIKVISION的用户,并且详细说明了版权和法律声明,强调手册内容的所有权归属于杭州海康威视数字技术股份有限公司,未经授权,禁止进行任何形式的复制、翻译或修改。同时,手册也声明了产品仅适用于中国大陆地区,并且在法律允许的范围内,产品按照现有状态提供,不提供任何形式的保证,对于因使用产品或手册所导致的损失,公司不承担任何赔偿责任。 手册还特别警示用户,将产品接入互联网可能面临风险,如网络攻击、黑客入侵或病毒感染,用户需自行承担这些风险。同时,用户必须遵守适用的法律法规,不得将产品用于侵犯第三方权利或不当用途,否则公司将不承担任何责任。 在操作前,手册提供了符号约定,包括说明、注意和危险等级的标识,帮助用户理解文档中关键信息的重要性。例如,“注意”用于提醒用户重要操作或...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 gddrxy综合性实验——某系统的设计与实现---互联网应用开发(JSP)4 1. 在MySQL数据库中构建用于实验的数据表,要求包含至少三个字段,并在其中至少加入一条数据记录 2. 设计一个数据录入界面,将用户提交的信息发送至Servlet以执行合法性验证,若验证通过则调用DAO组件向数据表中追加一条新记录 实验报告 实验名称:综合性实验——某系统的设计与实现(互联网应用开发——JSP) 一、实验目的与要求 本次实验旨在使学生深入掌握并熟练运用JavaServer Pages (JSP) 技术开展互联网应用开发工作,特别是在数据库交互方面的实践。通过本次实践操作,期望达成以下学习目标: 1. 精通JSP在数据库层面的增删改查(Create, Read, Update, Delete)操作,包括建立数据库连接、执行SQL指令以及管理结果集等环节。 2. 掌握Servlet的生命周期机制,理解其在Web系统中的功能定位与工作流程。 3. 学会构建动态网页,实现用户输入信息的采集,并在服务器端完成数据校验与处理流程。 二、实验原理与内容 1. JSP进行数据库操作的典型流程涵盖数据库连接建立、SQL指令执行、结果集处理以及连接关闭等多个关键步骤。 2. Servlet作为Java Web应用程序的核心构成部分之一,具有初始化、服务、销毁这三个生命周期阶段。在本次实验中,Servlet将负责接收并处理来自JSP页面的请求,完成数据合法性校验工作。 三、实验步骤与结果 1. 数据库准备: - 采用MySQL数据库创建一个实验用的数据表,例如命名"Student",表中包含"ID"(作...
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值