Python文本预处理(文本拆分)
21 Jan 2018 接下来,我们学习如何对文本进行拆分,即存在一个大数据集文本,我们如何将其切分成单个小的数据集。文本拆分适用于在自然语言处理过程中,需要对每通文本进行遍历打标的情况。具体步骤如下:将原始文本merge.txt放在D盘下,并在D盘中新建空白文件夹test
文本拆分的难点具体包括如下几个部分:
(1)原始文本如何按既定规则进行切片;
(2)切片后每个新文件的文件名如何写入;
(3)如何保证每个新文件中文本的完整性;
注:建议本节与Python文本预处理(文本合并)一同学习
Python文本拆分程序如下:
import re
import os
rootdir = 'd:\\test\\'
# 难点:对数据进行切片
p=re.compile('\/data\/voice\/',re.S) # 输入正则表达式切片的规则
fileContent=open('d:\\merge.txt','r',encoding='utf-8').read() # 读文件内容
paraList=p.split(fileContent) # 根据正则对文本进行切片
for i in range(len(paraList)): # 遍历切片后的文本列表
fileWriter=open(rootdir+str(i)+'.txt','w',encoding='utf-8')
fileWriter.write(paraList[i]) # 将文本写入
fileWriter.close()
for root, dirs, files in os.walk(rootdir):
for l in files:
l = root + l
line = open(l, 'r+', encoding='utf-8').readlines() # 文件按行读取
# 难点:剔除每个文件第一行数据
infile = ''.join(line[1:]) # 从每个文件第二行开始读取
outfile = open(str(l),'w',encoding='utf-8').write(infile)
# 难点:修改文件名
modname = ''.join(line[:1]) # 读取每个文件第一行
newurl = root + modname.strip() # strip移除字符串首尾字符(/n)
if newurl == root:
os.remove(l) # 删除多余文件
elif newurl != root:
os.rename(l,newurl) # 修改文件名
分类: 自然语言处理