網絡版《論語》內容比較齊全,包含了原文內容和注釋內容,而原文內容又包含了序號符號!這是一題比較簡單的應用題,只涉及到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("操作成功!")