Python文本预处理(文本拆分)

  接下来,我们学习如何对文本进行拆分,即存在一个大数据集文本,我们如何将其切分成单个小的数据集。文本拆分适用于在自然语言处理过程中,需要对每通文本进行遍历打标的情况。具体步骤如下:将原始文本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) # 修改文件名

分类: 自然语言处理