(轉)提取TXT文本中指定內容——python


項目介紹:
在PYTHON的計算機二級考試中有這么一個題,要求我們從一個文本中按照特定的格式提取指定內容。
文件名稱為“論語-網絡版.txt”,其內容采用如下格式組織:

【原文】

1.11子曰:“父在,觀其(1)志;父沒,觀其行(2);三年(3)無改於父之道(4),可謂孝矣。”

【注釋】

(略)

【譯文】

(略)

【評析】

(略)

該版本通過【原文】標記《論語》原文內容,采用【注釋】、【譯文】和【評析】標記對原文的注釋、譯文和評析。
問題1:請編寫程序,提取《論語》文檔中所有原文內容,輸出保存到“論語-提取版.txt”文件。輸出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的數字標志,行尾無空格、無空行。參考格式如下(原文中括號及內部數字是對應源文件中注釋項的標記):

子曰(1):“學(2)而時習(3)之,不亦說(4)乎?有朋(5)自遠方來,不亦樂(6)乎?人不知(7),而不慍(8),不亦君子(9)乎?”

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

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

(略)

問題2:請編寫程序,在“論語-提取版.txt”基礎上,進一步去掉每行文字中所有括號及其內部數字,保存為“論文-原文.txt”文件。參考格式如下:

子曰:“學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知,而不慍,不亦君子乎?”

有子曰:“其為人也孝弟,而好犯上者,鮮矣;不好犯上,而好作亂者,未之有也。君子務本,本立而道生。孝弟也者,其為人之本與?”

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

(略)

實現程序如下(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()

("論語-網絡版","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()

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

其運行結果如下:


————————————————
版權聲明:本文為CSDN博主「MENG_痴痴」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_44409075/article/details/88080091


免責聲明!

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



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