当前位置:

首页 > 编程开发 > 如何在 PyYAML 中保留多行字符串中的换行符与缩进空格

如何在 PyYAML 中保留多行字符串中的换行符与缩进空格

PyYAML默认解析多行字符串时折叠换行并删除缩进空格,使用字面量块标量`|-`可原样保留换行符与缩进空格,注意`|-`后须紧跟换行符且块内缩进不能少于首行,这是YAML字面量块标量的标准用法。

本文目录

    碰到 PyYAML 解析多行字符串时,发现缩进空格和换行符莫名其妙“丢了”,是不是挺让人抓狂的?其实问题根源很清晰:yaml.safe_load() 默认对多行字符串做“折叠”处理——行首空格被删除,多余换行也被压缩了。要想原封不动保留这些空白字符,必须祭出 YAML 的字面量块标量语法:|-。

    PyYAML 对字符串的解析,严格遵循 YAML 1.2 规范中关于标量样式的定义。如果没有特别声明,直接写一段多行字符串(比如 "first\n\n second"),它会被当作折叠风格或流式风格来处理。这时候,解析器会自动做三件事:

    • 把连续的空白行合并成一个换行符(\n\n → \n);
    • 去掉每行开头的缩进空格(也就是所谓的“缩进基准”被剥离了);
    • 把换行符当成空格分隔符来对待(除非主动启用字面量语义)。

    所以当你写下这段代码时:

    import yaml
    data = yaml.safe_load("first\n\n         second")
    print(repr(data))  # 输出: 'first\nsecond'

    结果自然就是——缩进空格和额外的换行,全没了。

    正确解法:用字面量块标量 |-

    核心方案其实很简单:使用字面量块标量(literal block scalar)。语法是 |- 开头,其中 | 代表保留换行,- 表示去掉末尾多余的那个换行符。后面紧跟一个换行,然后按你需要的格式书写内容即可——所有行首空格、内部换行、甚至制表符,都会原样保留。

    看个清楚点的例子:

    import yaml
    
    # ✅ 正确:使用 |- 显式声明字面量块
    data = yaml.safe_load("|-\n first\n         second")
    print(repr(data))
    # 输出: 'first\n         second'
    
    # 更贴近真实场景的用法(带缩进的 YAML 片段)
    yaml_text = """
    config:
      description: |-
        This is line one.
            This line starts with 4 spaces.
        And this is line three, aligned with line one.
    """
    parsed = yaml.safe_load(yaml_text)
    print(repr(parsed["config"]["description"]))
    # 输出: 'This is line one.\n    This line starts with 4 spaces.\nAnd this is line three, aligned with line one.'

    注意事项,容易踩坑的地方

    • |- 后面必须紧跟着换行符,否则解析会直接失败;
    • 字面量块里,所有行首空格都会被保留,包括首行之后的内缩进。但要注意,YAML 要求块内的缩进不能少于首行的缩进,否则会报错;
    • 末尾换行的处理:|- 是去掉末尾换行,| 是保留末尾换行,> 则是将换行折叠成空格(这个场景下不太常用);
    • 千万不要在字面量块中混用制表符和空格缩进,这很容易触发解析异常;
    • 如果在 Python 代码中用三引号 """ 书写多行 YAML,注意首行缩进要对齐,或者借助 textwrap.dedent 清理一下多余的缩进。

    总结一句话:当你需要精确控制多行字符串里的空白字符(尤其是既要保留缩进空格,又要保留换行符时),千万别依赖默认的解析行为。主动使用 YAML 字面量块语法 |- —— 这才是符合规范、稳定可靠、跨解析器兼容的标准方案。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    YY直播手机版设置隐藏活跃状态的方法
    YY直播手机版设置隐藏活跃状态的方法

    YY直播手机版设置隐藏活跃状态的方法 YY直播手机版,可是深受用户喜爱的直播平台应用哦!它汇聚了大量优质主播,直播内容也是丰富多彩,像才艺展示、聊天互动、游戏竞技等各种类型应有尽有,特别适合那些热衷于实时互动和个性化内容消费的朋友们。而且啊,这款应用还贴心地内置了“隐藏活跃状态”功能呢,这是专门为那

    YY直播手机版设置一键清除缓存数据的方法
    YY直播手机版设置一键清除缓存数据的方法

    YY直播手机版作为一款历史悠久且内容丰富的直播平台,用户能借助它观看海量直播与视频内容,还支持发布图文、短视频等动态,并与好友实时互动聊天。然而,随着使用时间的增加,APP会积累大量缓存数据,包括临时视频、缩略图、加载资源以及基础组件库等,这些都会占用手机的存储空间。为了优化运行速度并释放内存,用户

    YY直播手机版设置允许开启麦克风权限的方法
    YY直播手机版设置允许开启麦克风权限的方法

    YY直播手机版,这可是一款超棒的综合性语音娱乐应用,直播互动、才艺展示、实时连麦等功能一应俱全。在这里,用户既可以通过开播来吸引粉丝关注,又能够观看舞蹈、唱歌、聊天等各种类型的主播内容,还能与主播进行即时互动,从而有效提升自己的影响力和粉丝黏性。在开启直播或者录制小视频的时候,麦克风权限至关重要,它

    YY直播手机版设置聊天隐身状态的方法
    YY直播手机版设置聊天隐身状态的方法

    YY直播手机版可是直播爱好者的绝佳之选,它是一款功能强大的移动互动平台。在这里,用户能轻松观看各种高质量的直播内容,还能依据自己的喜好,参与弹幕互动、点赞打赏、连麦交流等活动。此外,该平台还支持私信聊天、内容分享、故事发布等功能,让您在享受娱乐的同时,也能满足社交需求。尤其值得一提的是,其内置的“聊

    YY直播手机版设置不允许接收电话通知的方法
    YY直播手机版设置不允许接收电话通知的方法

    YY手机版,可是一款备受用户热捧的直播与社交互动平台!它支持语音聊天、视频直播、才艺展示、连麦互动、游戏开黑等多种功能,能满足你多样化的需求。在这个平台上,用户不仅可以观看各类精彩纷呈的直播内容,还能发布个人作品、参与话题互动、加入兴趣社群,尽情享受全方位的娱乐体验。它的活跃用户超过5亿,日均在线人

    怎样在无忧小说网中查看阅读进度
    怎样在无忧小说网中查看阅读进度

    在无忧小说网,如何精准掌握你的阅读进度? 在无忧小说网追更小说,最怕的就是忘了上次读到哪儿。如果感觉界面没有清晰显示阅读进度,别急,这通常不是数据丢失,而是相关视图功能没有开启或找到。掌握下面这四条路径,你就能对阅读进度了如指掌。 一、通过阅读页面顶部状态栏查看 最简单直接的方法,其实就藏在眼皮底下

    YY直播手机版设置应用登录密码的方法
    YY直播手机版设置应用登录密码的方法

    YY手机版一直是很受欢迎的直播平台,用户基础相当大。借助它,不仅可以开启个人直播、和观众实时互动、慢慢积累粉丝,还能认识兴趣相近的朋友,分享生活里的精彩片段,甚至进一步拓展社交圈、邂逅理想伴侣。也正因为这类平台本身带有很强的社交属性,账号里往往又涉及不少个人信息,所以把隐私权限和账户安全设置到位,显

    YY直播手机版设置启用一键防护功能的方法
    YY直播手机版设置启用一键防护功能的方法

    YY手机版是一款人气很高的直播平台应用,打开之后,系统会智能推荐各类优质直播内容。对于喜欢看直播,或者想借助直播拓展社交互动的人来说,这类体验会更顺手。应用里还提供了“一键防护”功能,明显是为更看重隐私和社交边界的用户准备的:如果不想被陌生人@提及、评论、转发作品,或者收到对方发来的好友申请,只要开

    对话粤剧主创,解码戏曲破圈!YY直播激活红船非遗新活力
    对话粤剧主创,解码戏曲破圈!YY直播激活红船非遗新活力

    YY直播推出“红船载粤韵,新生传百年”主题直播,探访珠江红船粤剧剧场,通过数字化传播助力非遗传承与文旅消费升级,累计超60万网友观看,以云端演播与互动形式吸引年轻观众,激活传统戏曲新活力。

    yy动漫网_YY动漫免费登录入口高清版免费版
    yy动漫网_YY动漫免费登录入口高清版免费版

    对于动漫爱好者来说,找到一个资源全、体验好、还免费的观看平台,确实是个技术活。今天要聊的这个平台,在圈内口碑不错,它涵盖了十余类题材,能同步更新热门连载,支持双语字幕切换,还设有经典回溯专区,并提供完整的作品生命周期信息,算得上是“一站式”的追番选择了。 那么,这个平台的网页版体验到底如何?它凭什么

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。