1.问题描述:请编写程序,提取《论语》文档中所有原文内容,输出保存到“论语-提取版.txt”文件。输出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的数字标志,行尾无空格、无空行。参考格式如下(原文中括号及内部数字是对应源文件中注释项的标记):

 论语下载地址:

 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=='n':
41                     continue
42                 else:
43                     file2.write(line + 'n')
44 
45 
46 except Exception as t:
47     print(t)

 

若有不当之处,请各位不吝赐教。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/tlwhhy/p/14770448.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!