如何用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
相关产品推荐
相关产品推荐

