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

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨小郭

源自丨快学Python

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

先来看一下处理前的文本

处理后的文本

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

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

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

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.寻找指定分割字符,打印所在行数

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。

    • re.search(pattern, string, flags=0)
      
    • pattern : 正则中的模式字符串。

    • string : 要被查找替换的原始字符串。

    • flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

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

3.截取内容读入新文本

    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中数据预处理模块经常会用到,希望这篇文章对你有所帮助!加油,奥里给!

程序员专栏 扫码关注填加客服 长按识别下方二维码进群


近期精彩内容推荐:  

 外包程序员入职蚂蚁金服被质疑,网友:人生污点

 11 月全国程序员平均工资出炉

 弃用 Notepad++,还有 5 款更牛逼的选择!

 福利!手把手教你Python爬取女神套图


在看点这里好文分享给更多人↓↓

### 回答1: 可以使用以下代码实现: ```python def split_text_by_line(text, line_number): lines = text.split('\n') return lines[line_number-1] text = "Line 1\nLine 2\nLine 3\nLine 4" line_number = 2 result = split_text_by_line(text, line_number) print(result) ``` 在这个程序中,我们定义了一个函数 `split_text_by_line`,它接收一个字符串 `text` 和一个行号 `line_number`,然后将 `text` 按照换行符分割为行,并返回第 `line_number` 行的内容。 在代码的最后,我们创建了一个包含多行的字符串 `text`,指定了要提取的行号 `line_number` 为 2,然后调用了 `split_text_by_line` 函数,最后通过 `print` 语句打印结果。 ### 回答2: 编写一个Python程序分割文本可以使用split函数,它可以根据特定的行将文本分割多个部分。 ```python def split_text(text, line): lines = text.split(line) return lines text = """中国是一个伟大的国家。 这是一个拥有五千年历史的文明古国。 中国人民勤劳智慧,团结奋斗,为国家的繁荣发展做出了巨大贡献。""" split_line = "。" result = split_text(text, split_line) for i in result: print(i.strip()) ``` 这个程序中,我们定义了一个split_text函数,它接受两个参数:文本特定的行。在函数内部,我们使用split函数将文本按照特定行进行分割,并把分割后的结果保存在一个列表中。最后,我们使用for循环遍历列表,并打印每个元素(即每个分割后的文本段落)。 在上述例子中,我们使用"。"作为特定行进行分割,输出结果为: 中国是一个伟大的国家 这是一个拥有五千年历史的文明古国 中国人民勤劳智慧,团结奋斗,为国家的繁荣发展做出了巨大贡献 这样,我们就能够使用特定行将文本分割了。当然,如果你有其他特定的行作为分割符号,可以根据需要修改split_text函数中的参数。 ### 回答3: 编写一个Python程序,使用特定行将文本分割可通过以下方式实现: 1. 创建一个字符串变量,用于存储分割后的文本。 2. 打开文本文件,并逐行读取文本内容。 3. 检查每一行是否包含特定行,可以使用字符串的`find()`方法或正则表达式进行匹配。 4. 如果找到了特定行,将之前读取的文本保存到字符串变量中,并在特定行后添加一个分隔符(如空行或特殊字符)。 5. 如果没找到特定行,将当前行的内容添加到字符串变量中。 6. 继续遍历所有行,重复步骤3-5,直到读取完整个文本文件。 7. 关闭文本文件。 下面是一个简单的示例代码: ```python # 定义特定行 specific_line = "分割行" # 定义分割符 separator = "\n" # 创建空字符串变量 split_text = "" # 打开文本文件 with open("sample.txt", "r") as file: # 逐行读取文本内容 for line in file: # 检查是否包含特定行 if specific_line in line: # 保存之前读取的文本并添加分割符 split_text += separator + line else: # 添加当前行的内容 split_text += line # 输出分割后的文本 print(split_text) ``` 在代码中,我们使用了`with open()`语句来打开文本文件,并遍历每一行。如果找到特定行,我们将之前读取的文本保存到`split_text`字符串变量中,并添加分割符。如果没找到特定行,我们将当前行的内容添加到`split_text`中。最后,输出分割后的文本。请注意替换代码中的"sample.txt"为实际的文本文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值