You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python和PyYAML获取多行YAML中port值报错求助

解决PyYAML读取多行字符串嵌套YAML时的AttributeError问题

问题原因

你的YAML配置中,values字段使用了|-多行字符串标记,这会让PyYAML将该字段的值解析为纯字符串,而非嵌套的字典结构。所以当你尝试对data.get('values', {})调用.get()方法时,会触发AttributeError: 'str' object has no attribute 'get'——字符串类型本身没有get()方法。

解决方案

需要对values对应的字符串内容二次解析,将其转换为字典后再读取port值。修改后的脚本如下:

import yaml

with open('service.yaml') as f:
    data = yaml.safe_load(f)

# 先把values对应的多行字符串解析为YAML字典
values_dict = yaml.safe_load(data.get('values', ''))
# 从解析后的字典中获取port值
port = values_dict.get('services', {}).get('port', None)
print(port)

说明

  • data.get('values', '')确保当values字段不存在时,传入空字符串给yaml.safe_load(),避免因None导致解析报错。
  • 二次解析后,values_dict会转为嵌套字典结构,此时可正常使用.get()方法读取services.port的值。

内容的提问来源于stack exchange,提问作者RodrighoMR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:33:20