Python二级-文本处理
1.问题描述:请编写程序,提取《论语》文档中所有原文内容,输出保存到“论语-提取版.txt”文件。输出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的数字标志,行尾无空格、无空行。参考格式如下(原文中括号及内部数字是对应源文件中注释项的标记):
2.请编写程序,在“论语-提取版.txt”基础上,进一步去掉每行文字中所有括号及其内部数字,保存为“论文-原文.txt”文件。
论语下载地址
问题一:
1 k=0 2 a=0 3 b=0 4 l=[] 5 content=[] 6 7 try:#异常捕捉框架 8 with open(r"C:UsersDELLDesktop论语文本论语.txt","r",encoding="utf-8") as file1: 9 for line in file1:#逐行遍历文本 10 newline=line#单行处理预留 11 if newline[2:5] in [str(m)+"·"+str(n) for m in range(1,25) for n in range(1,25)] 12 or newline[2:6] in [str(m)+"·"+str(n) for m in range(1,25) for n in range(1,25)] 13 or newline[2:7] in [str(m)+"·"+str(n) for m in range(1,25) for n in range(1,25)]:#判断首部数字标识 14 for p in [str(m)+"·"+str(n) for m in range(45,0,-1) for n in range(45,0,-1)]:#消除首部标识,并加入列表content 15 if p in newline[0:9]: 16 newline2=newline.replace(p,"") 17 content.append(newline2) 18 break 19 20 else:#无标识则直接加入content 21 content.append(newline) 22 23 with open(r"C:UsersDELLDesktop论语文本论语改2.txt","w",encoding="utf-8") as file2: 24 for i in range(len(content)):#进行标识起点的识别 25 26 if "【原文】" in content[i] and i>=b: 27 28 a=i 29 k=i 30 31 while k!=0: 32 if "】" in content[k+1]:#判断内容是否属于标识终点,是则跳出循环进行标识起点的判断 33 b=k+1 34 l.append([a,b]) 35 break 36 else: 37 k+=1#将k的标识加一,进行下一行的判断 38 for m,n in l:#遍历标识起点和终点 39 for line in content[m+2:n-1]:#将标识起点和终点的原文部分直接逐行处理并写入文件 40 if line==" ": 41 continue 42 else: 43 file2.write(line + " ") 44 45 46 except Exception as t: 47 print(t)