Python二級考試-綜合應用題(對網絡版的《論語》txt文件進行提純)


網絡版《論語》內容比較齊全,包含了原文內容和注釋內容,而原文內容又包含了序號符號!這是一題比較簡單的應用題,只涉及到TXT文件的讀寫!解決思路也比較清晰明了。

題目:

 

原文件如下圖所示:

問題1:

 

分析問題:題目要求就是對“論語.txt”文件進行提純,把空格,“【原文】”和“【注釋】”以及注釋內容去掉,並寫入新的文件“論語-原文.txt”。注意:收尾空格要去掉。

解決思路:

1,用open函數打開源文件,並用readlines函數逐行讀取文件內容,這里返回列表類型,每一行為列表的一個元素。

2,遍歷列表,對每一個列表中的元素用strip函數和replace函數分別去掉換行符“\n”和收尾空格(因為源文件有些行為空,讀取的時候任會有“\n”,這樣去掉換行符方便后面處理)。

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('\n').replace(' ','')
        if new_txt and new_txt[0] != '' and new_txt[0] != '(':
            n += 1
            write_files(new_txt + "\n")
            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('\n').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("操作成功!")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM