Python小题目3:输出指定标签下指定类型的文字

给出一个文本文件《论语》,文件名称为“论语.txt”,其内容采用逐句“原文”与逐句“注释”相结合的形式组织,通过【原文】标记《论语》原文内容,通过【注释】标记《论语》注释内容,具体文件格式框架参照下图:

Python小题目3:输出指定标签下指定类型的文字

 

目录

文章目录

前言

一、思路

二、步骤

1.保留原文中所有【原文】标签下的内容

2.去除每行文字中所有小括号及内部数字

总结

​​​​​​​


前言

本小题考察对规则文本的处理能力

要求一:仅保留原文中所有【原文】标签下的内容,不保留标签,并去掉每行行首空格及行尾空格,无空行。原文小括号及内部数字是源文件中注释项的标记,请保留。

要求二:去除每行文字中所有小括号及内部数字,类似“提纯”效果。


一、思路

二、步骤

1.保留原文中所有【原文】标签下的内容

代码如下(示例):

fi=open('论语.txt','r')
fo=open('论语-原文.txt','w')
txt=fi.readlines()
flag=False  #flag为True时表示写入
for i in txt:
    if '【原文】' in i:
        flag=True
        continue #表示下一行
    if '【注释】' in i:
        flag=False
    i=i.strip('\n')#隶属for循环,表示一直写入,直到遇到下一个【原文】或者【注释】
    if flag==True:
        if i:
            fo.write(i+'\n')
fi.close()
fo.close()

2.去除每行文字中所有小括号及内部数字

代码如下(示例):

fi=open('论语-原文.txt','r')
fo=open('论文-提纯原文.txt','w')
for line in fi:#对每一行进行遍历
    for i in range(23):#每一行循环23次,直至去除最大值为23的标注
        line=line.replace('('+str(i)+')','')#字符拼接,上一个题目讲过的
    fo.write(line)
fi.close()
fo.close()


总结

       要求1:提取[原文]后面区域的内容,与单行提取不同,区域提取文本需要处理若干行,为此,需建立一个标记即a参数。
当遇到”【原文】”字样时,将a标记为1,后续读入该区域其他行时,按照[原文]对应区域块的文本进行处理。当遇到[注释]标记时,则将a标记为0,表示程序己离开了【原文】区域。根据
a变量值,确定是否将文本内容输出到新的文件中。                                                                                要求2:在要求1的基础上,进—步对提取后原文内容进行清理,去掉其中出现的小括号及内部数字,例如(1)、(2)等。一个简单思是逐─替换上述出现的字符串为空字符串,这种替换相当
于删除上述字符串,可采用. replace ()函数进行。

上一篇:Cola:一个分布式爬虫框架 - 系统架构 - Python4cn(news, jobs)


下一篇:多校冲刺 noip 11.07