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

如何用Pydantic Settings解析字符串列表?

如何用Pydantic Settings解析字符串列表?

这个问题其实和Pydantic Settings解析环境变量的默认逻辑有关,我来给你拆解一下:

为什么整数列表能成功,字符串列表不行?

Pydantic Settings 默认会尝试把环境变量的值当作 JSON 来解析。你用的 [1, 2, 3] 是合法的JSON数组格式,所以能直接被解析成整数列表;但你写的 ['a', 'b', 'c'] 用了单引号包裹字符串,而JSON规范里明确要求字符串必须用双引号,这个格式不符合JSON标准,自然就解析失败了。

不用自定义解析器的解决方法

这里有两种简单的方案,都不需要写复杂的自定义解析逻辑:

方案一:使用符合JSON规范的格式

把环境变量的值改成用双引号包裹字符串的JSON数组,注意设置环境变量时的转义(不同shell的写法略有区别):
比如在bash/zsh里可以这样设置:

export my_list_of_strings='["a", "b", "c"]'

代码部分保持不变:

from pydantic_settings import BaseSettings

class Settings(BaseSettings):
    my_list_of_strings: list[str]

print(Settings().model_dump())
# 输出结果: {'my_list_of_strings': ['a', 'b', 'c']}

这样Pydantic就能正常识别并解析这个JSON数组了。

方案二:用逗号分隔的字符串格式

如果你觉得JSON格式太繁琐,也可以直接用逗号分隔字符串,再借助Pydantic的内置验证器快速处理:

from pydantic_settings import BaseSettings
from pydantic import BeforeValidator

class Settings(BaseSettings):
    # 用lambda直接拆分逗号分隔的字符串
    my_list_of_strings: list[str] = BeforeValidator(lambda x: x.split(','))

# 设置环境变量:export my_list_of_strings="a,b,c"
print(Settings().model_dump())
# 输出结果: {'my_list_of_strings': ['a', 'b', 'c']}

这种方式更简洁,适合不需要复杂格式的场景。

备注:内容来源于stack exchange,提问作者Leonardus Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:24:30