admin管理员组文章数量:1516870
文本预处理
我需要做的是:读取txt文件,提取文本中所有带有书名号的内容,并存在一个txt文件里,做我的专有名词词典
1.读取txt文件
2.找出所有带有书名号的内容
3.提出所有重复的内容
4.存在新的txt文件中
更新了方法二,建议直接跳到方法二
方法一(建议看方法二)
1.读取文件+筛选出书名号内容
这个方法比较繁琐,可以看下一个代码块
TXTtemp = open("old_sentence.txt",encoding="utf-8")
txtbuffer = TXTtemp.read()oldlist=['']#list型newlist=['']#list型#oldlist存放txt文档中的内容oldlist=list(txtbuffer)forindexin range(len(txtbuffer)):
if oldlist[index]=="《":#这里range中的数字是根据书名号中内容的长度改变的,写最大的即可#例如我的所有书名内容长度不超过50,我这里写的50forjin range(50):
if oldlist[index+j]=="》":#我这里的“/nw"是因为我做NLP任务的需要#不需要的,删掉即可,更改为”》“
newlist.append("》/nw")
newlist.append("\n")j=0break
newlist.append(oldlist[index+j])
print(newlist)2.存入新文档
strlist ="".join(newlist)#strlist是str类型
txtnew = open("newtxt.txt","w")
txtnew.write(strlist)
txtnew.close()
TXTtemp.close()
print(strlist)3.剔除重复内容+存文件
#打开新的文件
TXTtemp = open("newtxt.txt")#readlines() 将读取的内容转成list型
txtbuffer = TXTtemp.readlines()#list类型#set()可以直接剔除重复内容,但是处理后的文档顺序可能有变化,因为我不在意顺序,所以没有关注后续处理
txtbuffer = list(set(txtbuffer))
print(txtbuffer)#重新存入原来的新文档
strlist ="".join(txtbuffer)
txtnew = open("newtxt.txt","w")
txtnew.write(strlist)
txtnew.close()
TXTtemp.close()#完成!- 文档地址;
- 第1部分,range()括号中的数,取决于你书名号内容的最大长度;(这部分还有“》”后边的内容)
- 有的可能还需要修改读取文件时解码的类型,encoding=“ ”
方法二 用正则的方法可以一步到位
import re
#读取文件
TXTtemp = open("old_sentence.txt",encoding="utf-8")
txtbuffer = TXTtemp.read()#使用findall(),用正则找到所有的带书名号的内容
temp = re.findall("《.*?》",txtbuffer)#剔除重复的
result = set(temp)
print(result)#存入新文件
strlist ="".join(txtbuffer)
txtnew = open("newtxt.txt","w")
txtnew.write(strlist)
txtnew.close()
TXTtemp.close()参考:
版权声明:本文标题:Python教程:快速解析文本获取所有书名号内容并去除重复 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1773099771a3276678.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论