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