首页编程Python文章详细

Python过滤文本字符的方法?

原创 2023-03-21 14:14:36 883

快《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子言行。这里给出了一个网络版本的《论语》,文件名称为“论语.txt”,其内容采用逐句“原文”与逐句“注释”相结合的形式组织,通过【原文】标记《论语》原文内容,通过【注释】标记《论语》注释内容,具体文件格式框架请参考“论语.txt”文件。

问题1:在PY301-1.py文件中修改代码,提取“论语.txt”文件中的原文内容.输出保存到考生文件夹下,文件名为“论语-原文.txt”。具体要求:仅保留“论语.txt”文件中所有【原文】标签下面的内容,不保留标签,并去掉每行行首空格及行尾空格,无空行。原文小括号及内部数字是源文件中注释项的标记,请保留。示例输出文件格式请参考“论语-原文-输出示例.txt”文件。注意:示例输出文件仅帮助考生了解输出格式,不作它用。

代码如下:

fi = open("论语.txt","r")
fo = open("论语-原文.txt", "w")
flag = False
for line in fi:
    if "【" in line:
        flag = False
    if "【原文】" in line:
        flag = True
        continue
    if flag == True:
        fo.write(line.lstrip())
fi.close()
fo.close()

【解题思路】

(1)题目要求从“论语:t”文件中提取内容,输出保存到文件“论语-原文.txt”中,因此需要用”r”模式打开“论语txt”,用"w”模式创建文件“论语-原文bot”。本颗要求区域性提取,与单行握取不同,因此,可以借助写标记dao来标记操作的是哪里的文本。使用for循环遍历“论语”中的每一行,当该行存在【时,说明已经到了新的区域,写标记置为否fag=False;当该行存在【原文】时,写标记置为True;当判断写标记为True时,就将当前行内容写入新的文件”论语-原文.bxt”中。对文件操作完成后使用closeO函数关闭文件。




问题2:在PY301-2.py文件中修改代码,对“论语-原文.bxt”或“论语.txt”文件进一步提纯,去掉每行文字中所有小括号及内部数字,保存为“论语-提纯原文.txt文件。示例输出文件格式请参考“论语-提纯原文-输出示例.txt”文件。W注意:示例输出文件仅帮助考生了解输出格式,不作它用。

代码如下:

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()

【解题思路】

(2)题目要求对“论语-原文.txt”进一步提纯,保存为“论语-提纯原文.txt”文件,因此需要用”r”模式打开“论语-原文.txt”,用"w”模式创建文件”论语-提纯原文t”。题目要求夫掉每行文字中所有小括号及内部数字,可在for循环遍历“论语-原文xt"文件中的每一行时,用空来代替出现的“(数字)“形式。分析“论语、原文口文件可知,其中出现”(1)”"~~(22)”共22中可能,因此内部嵌套for循环需要从1遍历到22,构造“(i)"并替换。替换后将该行内容写入到文件“论语-提纯原文.cxt”中。对文件操作完成后,使用close()函数关闭文件。


推荐