当前位置:   article > 正文

提取TXT文本中指定内容——python_txt文本提取指定内容

txt文本提取指定内容

项目介绍:

PYTHON的计算机二级考试中有这么一个题,要求我们从一个文本中按照特定的格式提取指定内容。
文件名称为“论语-网络版.txt”,其内容采用如下格式组织:

【原文】

1.11子曰:“父在,观其(1)志;父没,观其行(2);三年(3)无改于父之道(4),可谓孝矣。”

【注释】

(略)

【译文】

(略)

【评析】

(略)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

该版本通过【原文】标记《论语》原文内容,采用【注释】、【译文】和【评析】标记对原文的注释、译文和评析。
问题1:请编写程序,提取《论语》文档中所有原文内容,输出保存到“论语-提取版.txt”文件。输出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的数字标志,行尾无空格、无空行。参考格式如下(原文中括号及内部数字是对应源文件中注释项的标记):

子曰(1):“学(2)而时习(3)之,不亦说(4)乎?有朋(5)自远方来,不亦乐(6)乎?人不知(7),而不愠(8),不亦君子(9)乎?”

有子(1)曰:“其为人也孝弟(2),而好犯上者(3),鲜(4)矣;不好犯上,而好作乱者,未之有也(5)。君子务本(6),本立而道生(7)。孝弟也者,其为人之本与(8)?”

子曰:“巧言令色(1),鲜(2)仁矣。”

(略)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

问题2:请编写程序,在“论语-提取版.txt”基础上,进一步去掉每行文字中所有括号及其内部数字,保存为“论文-原文.txt”文件。参考格式如下:

子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知,而不愠,不亦君子乎?”

有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为人之本与?”

子曰:巧言令色,鲜仁矣。”

(略)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

实现程序如下(python):

fi = open("论语-网络版","r",encoding="utf-8")
fo = open("论语-提取版.txt","w",encoding="utf-8")

wflag =False                #写标记
newline = []                #创建一个新的列表


for line in fi :            #按行读入文件,此时line的type是str
    if "【" in line:        #重置写标记
        wflag =False
    if "【原文】" in line:     #检验是否到了要写入的内容
        wflag = True
        continue
    if wflag == True:
        K = list(line)
        if len(K)>1:           #去除文本中的空行
            for i in K :       #写入需要内容
                newline.append(i)

strlist = "".join(newline)      #合并列表元素
newlines = str(strlist)         #list转化成str

for D in range(1,100):                       #删掉句中()
    newlines = newlines.replace("({})".format(D),"")

for P in range(0,9):                               #删掉前面数值标题
    for O in  range(0,9):
        for U in range(0, 9):
           newlines = newlines.replace("{}.{}{}".format(P,O,U), "")

fo.write(newlines)

fo.close()
fi.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

运行结果如下:
在这里插入图片描述

其给的参考答案如下(分为两个程序):

fi = open("论语-网络版","r",encoding="utf-8")
fo = open("论语-提取版.txt","w",encoding="utf-8")
wflag = False      #写标记
for line in fi:
    if "【" in line :                  #遇到【时,说明已经到了新的区域,写标记置否
        wflag = False
    if "【原文】" in line:            #遇到【原文】时,设置写标记为Ture
        wflag = True
        continue
    if wflag == True:                 #根据写标记将当前行内容写入新的文件
        for i in range(0,25):
            for j in range(0,25):
                line = line.replace("{}·{}".format(i,j),"**")
        for i in range(0,10):
            line = line.replace("*{}".format(i),"")
        for i in range(0,10):
            line = line.replace("{}*".format(i),"")
        line = line.replace("*","")
        fo.write(line)
fi.close()
fo.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
fi = open("论语-提取版.txt","r")
fo = open("论语-原文","w")
for line in fi:
    for i in range(1,23):
        line = line.replace("({})".format(i),"")
    fo.write(line)
fi.close()
fo.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

其运行结果如下:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/373556
推荐阅读
相关标签
  

闽ICP备14008679号