如何用Python依据行内标识字符控制TXT文件行前缀添加?
正确实现按标记开关添加前缀的Python方案
原代码问题分析
你的代码存在几个关键问题,导致结果不符合预期:
- 一上来就无条件给所有行添加
--前缀,包括两个特殊标记行,直接违反需求 - 遇到
*******就用break终止整个循环,后面的行完全没处理,所以只输出到第三行就停止 break和continue后的print语句完全无效,因为这些关键字会直接跳转,不会执行后续代码- 没有用状态变量控制“何时加前缀、何时不加”的逻辑
正确实现方案
我们需要一个布尔变量作为开关,控制是否添加前缀,根据遇到的标记切换开关状态,再逐行处理输出。
import fileinput file_name = 'abc.txt' add_prefix = True # 初始状态:开启前缀添加 for line in fileinput.FileInput(file_name, inplace=1): line = line.rstrip('\n') # 去除换行符,避免输出重复空行 if line == '*******': print(line) add_prefix = False # 遇到停止标记,关闭前缀开关 elif line == '#######': print(line) add_prefix = True # 遇到恢复标记,打开前缀开关 else: # 根据当前开关状态决定输出内容 print(f'-- {line}' if add_prefix else line)
代码逻辑说明
add_prefix作为前缀开关,初始设为True,默认需要添加前缀- 先去除每行末尾的换行符,避免打印时出现多余空行
- 遇到
*******时,直接输出原行,并关闭前缀开关 - 遇到
#######时,直接输出原行,并打开前缀开关 - 其他行根据当前开关状态,决定输出带前缀的内容还是原内容
运行这段代码后,就能得到你期望的输出结果:
-- aaaaaaa -- bbbbbbb ******* 1234567 7654321 ####### -- ddddddd -- eeeeeee
内容的提问来源于stack exchange,提问作者calv r
相关产品推荐
相关产品推荐

