如何将带标题分隔线的多行字符串转换为指定结构的Python字典
实现思路
- 第一步:预处理原始字符串,先按换行符
\n切割为单行列表,过滤掉首尾无实际内容的空行、以及包裹字符串的三个双引号行。 - 第二步:遍历行列表找到全由短横线组成的分隔线位置,分隔线的上一行直接作为
title字段的值。如果确定分隔线固定出现在第二行,也可以直接跳过遍历步骤取第一行当标题,执行效率更高。 - 第三步:分隔线的下一行是作者信息行,直接截取
Author:之后的内容作为author字段的值。 - 第四步:作者行之后的所有内容,过滤掉开头的空行后,用
\n重新拼接为完整字符串,即为body字段的值,天然保留原有的段落空行格式。
代码示例(Python)
def parse_content(raw_str): # 拆分行为列表,去除首尾空白和多余引号 lines = [line.strip('\r') for line in raw_str.strip().strip('"').strip().split('\n')] # 定位短横线分隔线的索引位置 split_idx = None for i, line in enumerate(lines): if all(c == '-' for c in line) and len(line) > 0: split_idx = i break # 提取各字段内容 title = lines[split_idx - 1].strip() author = lines[split_idx + 1].strip().replace('Author: ', '', 1) # 处理正文:去除开头空行后拼接 body_lines = lines[split_idx + 2:] while body_lines and body_lines[0].strip() == '': body_lines.pop(0) body = '\n'.join(body_lines) return { "title": title, "author": author, "body": body } # 测试效果 raw_content = """ This is title ------------------------- Author: Name of the author Sentence 1. Sentence 2. """ print(parse_content(raw_content))
内容的提问来源于stack exchange,提问作者Guacaka283
相关产品推荐
相关产品推荐

