zoukankan      html  css  js  c++  java
  • Python二级考试-综合应用题(对网络版的《论语》txt文件进行提纯)

    网络版《论语》内容比较齐全,包含了原文内容和注释内容,而原文内容又包含了序号符号!这是一题比较简单的应用题,只涉及到TXT文件的读写!解决思路也比较清晰明了。

    题目:

    原文件如下图所示:

    问题1:

    分析问题:题目要求就是对“论语.txt”文件进行提纯,把空格,“【原文】”和“【注释】”以及注释内容去掉,并写入新的文件“论语-原文.txt”。注意:收尾空格要去掉。

    解决思路:

    1,用open函数打开源文件,并用readlines函数逐行读取文件内容,这里返回列表类型,每一行为列表的一个元素。

    2,遍历列表,对每一个列表中的元素用strip函数和replace函数分别去掉换行符“ ”和收尾空格(因为源文件有些行为空,读取的时候任会有“ ”,这样去掉换行符方便后面处理)。

    3,去掉换行符和收尾空格后,我们就可以观察当前文件内容(可以输出查看),不难发现除了原文内容,其他行第一个字符要么是“【”就是“(”,这样我们就可以用if语句进行筛选。

    4,对筛选的内容写入新的文件即可。

    代码实现:

    # !/usr/bin/env python
    # -*- encoding:utf-8 -*-
    # 作者:赖正华
    
    def read_files():
        """读取文件"""
        files = open("C:\WEXAM\000000000000\论语.txt","r",encoding="gbk") # 文件位置以文件所在位置为准
        txts = files.readlines()
        n = 0
        for txt in txts:   # 也可以直接遍历files,效果是一样的。
            new_txt = txt.strip('
    ').replace(' ','')
            if new_txt and new_txt[0] != '' and new_txt[0] != '(':
                n += 1
                write_files(new_txt + "
    ")
                print("第{}句写入成功!".format(n))
        files.close()
    def write_files(strs):
        """写入文件"""
        files = open("C:\WEXAM\000000000000\论语-原文.txt","a+",encoding="gbk")    # 文件位置以文件所在位置为准

    files.write(strs)
        files.close() 

    if __name__ == "__main__":
    read_files()

    print("操作成功!")

    另一种解决思路:

    files = open("C:\Users\赖正华\Desktop\论语.txt","r",encoding="utf-8")
    lines = files.readlines()
    num = 1
    for line in lines:   # 也可以直接遍历files,效果是一样的。
        line = line.strip('
    ').replace(' ','')
        if line and num == 1 and line.count("【原文】") == 0  and line.count("【注释】") == 0:
            print(line)
        if line.count("【原文】") > 0:
            num = 1
        if line.count("【注释】") > 0:
            num = 0
    files.close()
    
    # 输出内容如下:
    # 子曰(1):“学(2)而时习(3)之,不亦说(4)乎?有朋(5)自远方来,不亦乐(6)乎?人不知(7),而不愠(8),不亦君子(9)乎?”

    问题2:

    分析问题:题目要求就是对问题一写入的新文件“论语-原文.txt”进一步提纯,也就是去掉每行文字中所有小括号及内部数字,并写入新的文件“论语-提纯原文.txt”。

    解决思路:

    1,用open函数打开源文件,并用readlines函数逐行读取文件内容,这里返回列表类型,每一行为列表的一个元素。

    2,也是遍历列表,用strip函数或replace函数去除即可,这里我用replace函数。

    3,对写好的内容写入新的文件即可。

    代码实现:

    # !/usr/bin/env python
    # -*- encoding:utf-8
    # 作者:赖正华
    
    def read_files():
        """读取文件"""
        with open("C:\WEXAM\000000000000\论语-原文.txt","r",encoding="gbk") as files:
            lines = files.readlines()
            n = 0
            for line in lines:   # 也可以直接遍历files,效果是一样的。
                n += 1
                for i in range(1,11):
                    s = '(' + str(i) + ')'
                    line = line.replace(s,'')
                write_files(line)
                print("第{}行写入成功!".format(n))
    
    def write_files(strs):
        """写入文件"""
        with open("C:\WEXAM\000000000000\论语-提纯原文.txt","a+",encoding="gbk") as files:
            files.write(strs)
    if __name__ == "__main__":
        read_files()
        print("操作成功!")
    学习没有捷径,需要日积月累的积淀及对技术的热爱。
  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/laizhenghua/p/lunyu.html
Copyright © 2011-2022 走看看