You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python合并同标题文本并整理为指定输出格式?

文本分组合并解决方案

需求描述

将输入文本中同一[ADD xxx]标题下的内容合并,去除空行后按标题分组输出。

输入示例

[ADD BD]
'text1'

[ADD BD]
'text2' 

[ADD BD]
'text3' 

[ADD TLD]
'text4'

[ADD BRD]
'text5'

[ADD BRD]
'text6'

期望输出

[ADD BD]
'text1'
'text2'
'text3'

[ADD TLD]
'text4'

[ADD BRD]
'text5'
'text6'

实现方法

方法一:逐行处理+字典分组

逻辑直观易理解,能高效处理空行和分组:

test0 = """
[ADD BD]
'text1'

[ADD BD]
'text2' 

[ADD BD]
'text3' 

[ADD TLD]
'text4'

[ADD BRD]
'text5'

[ADD BRD]
'text6'
"""

# 初始化字典存储每个标题对应的内容
grouped_content = {}
current_title = None

# 逐行遍历文本
for line in test0.split('\n'):
    stripped_line = line.strip()
    # 跳过空行
    if not stripped_line:
        continue
    # 判断是否为标题行
    if stripped_line.startswith('[ADD') and stripped_line.endswith(']'):
        current_title = stripped_line
        # 若标题未在字典中,初始化空列表
        if current_title not in grouped_content:
            grouped_content[current_title] = []
    else:
        # 将内容添加到当前标题的列表中
        if current_title is not None:
            grouped_content[current_title].append(stripped_line)

# 生成输出内容
output = []
for title, contents in grouped_content.items():
    output.append(title)
    output.extend(contents)
    output.append('')  # 标题间添加空行分隔

# 打印结果,移除末尾多余空行
print('\n'.join(output).rstrip('\n'))

关键逻辑

  • 用字典grouped_content存储标题与对应内容的映射,键为标题字符串,值为内容列表。
  • 逐行处理时,先去除行首尾空白,跳过空行;识别标题行后切换当前分组,非标题行则加入当前分组的内容列表。
  • 输出时按标题+内容的格式拼接,标题之间用空行分隔。

方法二:正则表达式提取+分组

如果倾向用正则,可以一次性提取所有标题-内容对,再整理分组:

import re

test0 = """
[ADD BD]
'text1'

[ADD BD]
'text2' 

[ADD BD]
'text3' 

[ADD TLD]
'text4'

[ADD BRD]
'text5'

[ADD BRD]
'text6'
"""

# 正则匹配所有标题和对应的内容行
pattern = r'(\[ADD .+?\])\s*(\'.+?\')'
matches = re.findall(pattern, test0, re.DOTALL)

# 分组整理内容
grouped_content = {}
for title, content in matches:
    clean_content = content.strip()
    if title not in grouped_content:
        grouped_content[title] = []
    grouped_content[title].append(clean_content)

# 生成并打印输出
output = []
for title, contents in grouped_content.items():
    output.append(title)
    output.extend(contents)
    output.append('')

print('\n'.join(output).rstrip())

关键逻辑

  • 正则表达式(\[ADD .+?\])\s*(\'.+?\')匹配标题行和紧随其后的内容行,re.DOTALL允许匹配跨行内容。
  • 提取到所有匹配对后,用字典分组整理,最终按格式输出。

内容的提问来源于stack exchange,提问作者Y. Pat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:03:24