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:\Users\DELL\Desktop\论语文本\论语.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:\Users\DELL\Desktop\论语文本\论语改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=='\n': 41 continue 42 else: 43 file2.write(line + '\n') 44 45 46 except Exception as t: 47 print(t)
问题二:
1 try: 2 with open(r'C:\Users\DELL\Desktop\论语文本\论语改2.txt','r',encoding='utf-8') as file3,open(r'C:\Users\DELL\Desktop\论语文本\论语改8.txt', 'w', encoding='utf-8') as file4: 3 for line in file3: 4 for i in range(0,30): 5 lines=line.replace('(2)',"") 6 file4.write(lines) 7 except Exception as t: 8 print(t)
若有不当之处,请各位不吝赐教。