yaml引号用法_字符串包含空格或特殊字符_需要加引号

该博客介绍了Python中读取YAML文件时,双引号与单引号的使用区别。双引号包围的字符串会原样输出,包括特殊字符如换行符 。而单引号则会导致特殊字符被转义,例如 会变成 。通过示例代码展示了如何使用`yaml`库读取包含不同引用方式的test.yaml文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果字符串没有空格或特殊字符,不需要加引号;如果其中有空格或特殊字符,则需要加引号。
双引号不会被Python转义,字符串将原样输出。
单引号会被Python转义,字符串将转义后输出。
# test.yaml 文件内容
# 双引号
str: xiaoming
str1: "Hello World"
str2: "Hello\nWorld"

# 单引号
str: xiaoming
str1: 'Hello World'
str2: 'Hello\nWorld'

# python 代码
import yaml
import os

# 项目路径
project_path = os.path.split(os.path.realpath(__file__))[0].split('tools')[0]


def get_yaml_data(fileDir):
    """
    读取 test.yaml 文件内容
    :param fileDir:
    :return:
    """
    # 1、在内存里加载这个文件
    f = open(fileDir, 'r', encoding='utf-8')
    # 2、调用yaml读取文件
    # Loader=yaml.FullLoader 更加安全
    res = yaml.load(f, Loader=yaml.FullLoader)
    return res


if __name__ == '__main__':
    info = get_yaml_data(project_path + r'\test.yaml')
    print(info)


# 输出:
# 双引号->原样输出
# {'str': 'xiaoming', 'str1': 'Hello World', 'str2': 'Hello\nWorld'}
# 单引号->转义后输出
# {'str': 'xiaoming', 'str1': 'Hello World', 'str2': 'Hello\\nWorld'}
### YAML 文件中特殊字符的使用和处理 #### 多行字符串表示方式 对于多行字符串,在 YAML 中可以通过 `|` 和 `>` 符号来进行定义。管道符 `|` 表示保留原始换行,即每一行会被视为独立的一行并保持原有格式[^3]。 ```yaml long_string: | 这是一个很长的字符串, 它跨越了多个行。 所有的换行都将被保存下来。 ``` 大于号 `>` 则会折叠换行为单个空格,除非显式地留出空白行[^4]。 ```yaml folded_string: > 这里所有的换行都被替换成空格, 只有当实际输入两个回车时才会形成新的段落。 就像这样形成了一个新的段落。 ``` #### 控制结尾换行的行为 为了更精细地控制文本块结束位置是否有额外的新行,YAML 提供了两种修饰符 `-` 和 `+` 来分别移除保留最终的换行: - 使用 `|-` 结束一个多行字符串将会去除最后一行之后多余的换行; - 而 `|+` 不仅保留内部所有换行还包括最后可能存在的换行。 ```yaml remove_trailing_newline: |- 移除了最后一个换行 preserve_all_newlines: |+ 保留了一切换行, 包括这个最后的换行。 ``` #### 字符串内转义序列 尽管上述符号已经能够很好地满足大多数场景下的需求,但在某些情况下仍需对特定字符进行转义。例如反斜杠 `\` 自身以及双引号 `"`, 单引号 `'` 都可以在必要时候通过前缀添另一个反斜杠来实现转义[^1]。 ```yaml escaped_characters: "这是包含 \"双引号\" 和 \\ 反斜杠的例子" ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢同学.

但行好事 莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值