前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个文本按指定字符分割成多个文本

一个文本按指定字符分割成多个文本

作者头像
快学Python
发布2021-08-09 10:15:29
3.6K0
发布2021-08-09 10:15:29
举报
文章被收录于专栏:快学Python

作者:小郭

源自:快学Python

今天师兄扔给我一个txt,说:“来,小郭,你把这个文本处理一下,按照指定字符分割成多个文本。”这下可难倒我了,不过好在功夫不负有心人,几经周折之后把它完成了。

先来看一下处理前的文本

处理后的文本

每个文本中的内容格式如下:

接下来详细介绍一下处理过程

1.读取文本及指定分割的字符

代码语言:javascript
复制
inputfile = input('Input SourcFile:') ##输入源文件,如A.txt
    fp = open(inputfile, 'r',encoding="UTF-8")
    number =[]    #用来存放指定分割字符所在行数
    lineNumber = 1
    keyword = input('Slice Keyword:') ##输入你要切分的关键字
    outfilename = input('Outfilename:')##输出文件名,如out.txt则写out即可,后续输出的文件是out0.txt,out1.txt...

2.寻找指定分割字符,打印所在行数

代码语言:javascript
复制
count = 0 #记录文件所有行数
    for index, line in enumerate(fp):
        count += 1
        m=re.search(keyword,line)
        print(m)
        if m is not None:
            number.append(index)
    print(number)
    print(count)

re.search

  • 扫描整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None。
  • pattern : 正则中的模式字符串。
  • flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

针对文本的中用到的search函数测试结果如下:

3.截取内容读入新文本

代码语言:javascript
复制
    for i in range(0,len(number)-1):
        start = number[i]
        print(start)
        end = number[i+1]
        print(end)
        destLines = linecache.getlines(inputfile)[start+1:end] #将行号为start+1到end-1的文件内容截取出来
        fp_w = open(outfilename + str(i)+'.txt','w',encoding="utf-8") #将截取出的内容保存在输出文件中
        for key in destLines:
            fp_w.write(key)
        fp_w.close()
  • 如果不确定自己打印的内容行数,可以将行数先输出

结语

在编写代码的过程中文本编码格式老报错,格式费了半天劲才搞懂是怎么回事,记得文本txt的编码格式是UTF-8才能被顺利读取。文本的切分在NLP中数据预处理模块经常会用到,希望这篇文章对你有所帮助!加油,奥里给!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 快学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.读取文本及指定分割的字符
  • 2.寻找指定分割字符,打印所在行数
  • 3.截取内容读入新文本
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档