Python如何将前一行以AA开头的字符串追加到下一行末尾
Python多行文本处理实现方案
需求是将所有以"AA"开头的独立行内容,追加到其下一行的末尾,同时删除原AA行,保留原有文本的空行排版。
核心处理逻辑
- 逐行扫描文本,用临时变量存储待追加的AA行内容
- 扫到以AA开头的行时,先把内容存到临时变量里,这行直接跳过不输出
- 扫到普通内容行的时候,如果临时变量里存了AA,就把AA拼到这行末尾,清空临时变量,再把拼好的行输出
- 全程保留原文本的空行、换行格式,不会改乱原有排版
可直接运行的实现代码
def append_aa_to_next_line(input_text: str) -> str: # 按行拆分文本,保留原换行符 lines = input_text.splitlines(keepends=True) processed_lines = [] pending_aa = None for line in lines: stripped_line = line.strip() # 匹配以AA开头的行 if stripped_line.startswith("AA"): pending_aa = stripped_line continue # 如果有待追加的AA内容,拼接到当前行末尾 if pending_aa is not None: line_core = line.rstrip("\r\n") line = f"{line_core} {pending_aa}\n" pending_aa = None processed_lines.append(line) return "".join(processed_lines)
效果验证
用题目给出的示例输入测试:
if __name__ == "__main__": test_input = """AA 1 A B C 2 D E F AA 3 G H I """ print(append_aa_to_next_line(test_input))
运行输出和期望结果完全一致:
1 A B C AA 2 D E F 3 G H I AA
边界调整说明
- 如果需要匹配整行只有AA的行(而非所有AA开头的行),把判断条件
stripped_line.startswith("AA")改成stripped_line == "AA"即可 - 如果文本末尾存在没有下一行的AA行,当前逻辑会直接丢弃该AA行,若需要保留可在遍历结束后判断
pending_aa是否为空,追加到结果末尾即可
内容的提问来源于stack exchange,提问作者Pajaree Jedtragulvit
相关产品推荐
相关产品推荐

