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

如何用Python在层级结构文本的指定位置追加字符串?

使用Python在指定层级节点后追加字符串

实现思路

通过逐行遍历文件内容,跟踪当前所在的层级节点,当定位到Component_X→Value1→Value1.2这一行后,在其后方插入或替换目标字符串true。

代码实现

# 读取原始文件
with open('input.txt', 'r') as f:
    lines = [line.rstrip('\n') for line in f]

modified_lines = []
in_component_x = False
in_value1 = False
just_saw_value12 = False

for line in lines:
    if just_saw_value12:
        # 若下一行是注释,直接替换为true
        if line.strip().startswith('#'):
            modified_lines.append('      true')
            just_saw_value12 = False
            continue
        # 否则在Value1.2后插入true
        else:
            modified_lines.append('      true')
            just_saw_value12 = False
    
    modified_lines.append(line)
    
    # 更新当前层级状态
    stripped_line = line.strip()
    if stripped_line == 'Component_X':
        in_component_x = True
        in_value1 = False
        just_saw_value12 = False
    elif stripped_line == 'Component_Y':
        in_component_x = False
        in_value1 = False
        just_saw_value12 = False
    elif in_component_x:
        if stripped_line == 'Value1':
            in_value1 = True
            just_saw_value12 = False
        elif stripped_line == 'Value2':
            in_value1 = False
            just_saw_value12 = False
        elif in_value1 and stripped_line == 'Value1.2':
            just_saw_value12 = True

# 写入修改后的内容到新文件
with open('output.txt', 'w') as f:
    for line in modified_lines:
        f.write(line + '\n')

代码说明

  • 层级跟踪: 用三个布尔变量记录当前是否处于Component_X、Value1节点,以及是否刚遇到Value1.2行。
  • 注释替换: 如果Value1.2后是注释行,直接将注释替换为true。
  • 插入逻辑: 如果Value1.2后是其他内容,在Value1.2行之后插入true,保留原有格式和空行。
  • 批量处理: 自动处理文件中所有Component_X实例,无需手动逐个修改。

内容的提问来源于stack exchange,提问作者Jacky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:40:23