考生文件夹下存在2个Python源文件和3个文本文件,分别对应两个问题,请按照文件内说明修改代码,实现以下功能。 《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子言行。这里给出了一个网络版本的《论语》,文件名称为“论语.txt”,其内容采用

admin2021-03-16  35

问题 考生文件夹下存在2个Python源文件和3个文本文件,分别对应两个问题,请按照文件内说明修改代码,实现以下功能。
    《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子言行。这里给出了一个网络版本的《论语》,文件名称为“论语.txt”,其内容采用逐句“原文”与逐句“注释”相结合的形式组织,通过【原文】标记《论语》原文内容,通过【注释】标记《论语》注释内容,具体格式请参考“论语.瞰”文件。
    问题1:在“PY301-1.py”文件中修改代码,提取“论语.txt”文件中的原文内容,输出保存到考生文件夹下,文件名为“论语-原文.txt”。具体要求:仅保留“论语.txt”文件中所有【原文】标签下面的内容,不保留标
签,并去掉每行行首空格及行尾空格,无空行。原文圆括号及内部数字是源文件中注释内容的标记,请保留。文件输出格式请参考“论语-原文-输出示例.txt”文件。注意:输出示例仅帮助考生了解输出格式,不作它用。
    试题程序:
    #以下代码为提示框架
    #请在程序的…处使用一行或多行代码替换
    #请在程序的________处使用一行代码替换
    #注意:提示框架的代码可以任意修改,以完成程序功能为准
    fi=open("论语.txt",________)
    fo=open("论语-原文.Txt,________)
    …
    for line in fi:
    …
           fo.write(1ine.lstrip())
    …
    问题2:在“PY301-2.py”文件中修改代码,对“论语-原文.txt”或“论语.txt”文件进一步提纯,去掉每行文字中所有圆括号及内部数字,保存为“论语-提纯原文.txt”文件。文件输出格式请参考“论语-提纯原文-输出示例.txt”文件。注意:示例输出文件仅帮助考生了解输出格式,不做它用。
    试题程序:
    #以下代码为提示框架
    #请在程序的…处使用一行或多行代码替换
    #请在程序的________处使用一行代码替换
    #注意:提示框架的代码可以任意修改,以完成程序功能为准
    fi=open("论语-原文.txt",________)
    fo=open("论语-提纯原文.txt",________)
    for line in fi:
    …
        line=line.replace(________)
    …

选项

答案(1)fi=open("论语.txt","r") fo=open("论语-原文.txt","w") flag=False for line in fi: if"【"in line: flag=False if"【原文】"in line: flag=False continue if flag==False fo.write(line.lstrip()) fi.close() fo.close() (2) fi=open("论语-原文.txt","r") fo=open("论语-提纯原文.txt","w") for line in fi: for i in range(1,23) line=line.replace("({})").format(i),"") fo.write(line) fi.close() fo.close()

解析 (1)题目要求从“论语.txt”文件中提取内容,输出保存到文件“论语-原文.txt”中,因此需要用"r"模式打开“论语.txt”,用"w"模式创建文件“论语-原文.txt”。
本题要求区域性提取,与单行提取不同,因此,可以借助写标记flag来标记操作的是哪里的文本。使用for循环遍历“论语.txt”中的每一行,当该行存在时,说明已经到了新的区域,写标记设置为否,即flag=False;当该行存在【原文】时,写标记设置为True;当写标记为True时,就将当前行内容写入新的文件"论语-原文.txt"中。对文件操作完成后,使用close()方法关闭文件。
(2)题目要求对“论语-原文.txt”进一步提纯,保存为“论语-提纯原文.txt”文件,因此需要用"r"模式打开“论语-原文.txt”,用"w"模式创建文件“论语-提纯原文.txt”。
题目要求去掉每行文字中所有圆括号及内部数字,可在for循环遍历“论语-原文.txt”文件中的每一行时,用空格来代替出现的“(数字)”形式。分析“论语-原文.txt”文件可知,其中出现(1)~(22)共22种可能,因此内部嵌套for循环需要从l遍历到22,构造(i)并替换。替换后将该行内容写入文件“论语-提纯原文.txt”中。对文件操作完成后,使用close()方法关闭文件。
转载请注明原文地址:https://kaotiyun.com/show/Xc6p777K
0

最新回复(0)