对文本数据清洗时,为了增强效果(还不知道会不会增强),需要删除某一句话全为未标注实体的文本。如下图中“成 O”那一行。属于整句话都未标注,可以删除。
目标任务:
删除两空行之间不符合要求(未有标注)的文本。
import linecache
with open("all2.txt", 'r', encoding='utf-8') as f:
file=""#不能是''
numbers=[]
numb=[]
for number, line in enumerate(f, start=1):
if line == "\n":
numbers.append(number)
for num in range(len(numbers)-1):
# print(numbers[num]+1,numbers[num+1]-1,"******")
for i in range(numbers[num]+1,numbers[num+1]):#包头不包尾,即从空行下一行开始到下一个空行上一行为止
line = linecache.getline('all2.txt',i)
if line[2]!= 'O':
numb.append(numbers[num]+1)
numb.append(numbers[num+1]-1)#讲两空行内符合条件的空行加入新的列表
break
#print(numb)
for i in range(int(len(numb)/2)-1):
for j in range(numb[2*i],numb[2*i+1]+1):
#print(j)
line = linecache.getline('all2.txt',j)#获取符合条件的指定行
file+=line
file+='\n'#完成一次两空行间查找,添加空行
# num.append(num,num+1)
with open("2.txt", "w", encoding='utf-8') as f:
f.write(file)
f.close()