橘子1649 2023-04-03 09:04 采纳率: 57.1%
浏览 16
已结题

Python文本改写报错

环境:Python3.7,pycharm
问题:Python对文本进行读取,我想在文本的每一个段首和段尾各添加一个符号,但是尝试了更多方法均报错
请问有什么方式能够完成呢

  • 写回答

3条回答 默认 最新

  • MossGrower 全栈领域新星创作者 2023-04-03 09:35
    关注

    可以使用 Python 的文件读写操作来实现。具体步骤如下:

    1. 打开文本文件,将文件内容读取到一个字符串中。

      with open('file.txt', 'r') as f:
          content = f.read()
      

      这里使用了 Python 的 with 语句,可以自动关闭文件,避免文件句柄泄漏等问题。

    2. 对字符串进行处理,寻找每一段的起始和结束位置,并在对应位置添加符号。

      symbol1 = '<'  # 段首符号
      symbol2 = '>'  # 段尾符号
      new_content = ''  # 处理后的字符串
      last_end = 0     # 上一段的结束位置
      for match in re.finditer('\n\n+', content):
          start, end = match.span()
          new_content += content[last_end:start].strip() + symbol2 + '\n\n' + symbol1
          last_end = end
      new_content += content[last_end:].strip() + symbol2
      

      具体来说,这里使用正则表达式 '\n\n+' 来匹配段落的分隔符,然后处理每个匹配段落的起始和结束位置,最后在每一段的起始和结束位置添加对应的符号。

    3. 将处理后的字符串写入新的文本文件。

      with open('new_file.txt', 'w') as f:
          f.write(new_content)
      

    完整的代码示例如下:

    import re
    
    symbol1 = '<'  # 段首符号
    symbol2 = '>'  # 段尾符号
    
    with open('file.txt', 'r') as f:
        content = f.read()
    
    new_content = ''
    last_end = 0
    for match in re.finditer('\n\n+', content):
        start, end = match.span()
        new_content += content[last_end:start].strip() + symbol2 + '\n\n' + symbol1
        last_end = end
    new_content += content[last_end:].strip() + symbol2
    
    with open('new_file.txt', 'w') as f:
        f.write(new_content)
    

    注意,这里的代码仅处理以两个以上换行符作为段落分隔符的文本,不适用于其他形式的文本格式。如果需要处理其他格式的文本,可以根据实际情况调整正则表达式和处理逻辑。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?