给出一个文本文件《论语》,文件名称为“论语.txt”,其内容采用逐句“原文”与逐句“注释”相结合的形式组织,通过【原文】标记《论语》原文内容,通过【注释】标记《论语》注释内容,具体文件格式框架参照下图:
目录
文章目录
前言
一、思路
二、步骤
1.保留原文中所有【原文】标签下的内容
2.去除每行文字中所有小括号及内部数字
总结
本小题考察对规则文本的处理能力
要求一:仅保留原文中所有【原文】标签下的内容,不保留标签,并去掉每行行首空格及行尾空格,无空行。原文小括号及内部数字是源文件中注释项的标记,请保留。
要求二:去除每行文字中所有小括号及内部数字,类似“提纯”效果。
代码如下(示例):
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()
代码如下(示例):
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 ()函数进行。