【发布时间】:2021-06-17 06:57:04
【问题描述】:
考虑到字符串不是通用格式,而是 UDF 函数的输出,我需要一些帮助来处理字符串到字典
PySpark UDF 的返回类似于以下字符串:
"{list=[{a=1}, {a=2}, {a=3}]}"
我需要将其转换为具有以下结构的python字典:
{
"list": [
{"a": 1}
{"a": 2}
{"a": 3}
]
}
所以我可以访问它的值,比如
dict["list"][1]["a"]
我已经尝试过使用:
- JSON.loads
- ast_eval()
有人可以帮帮我吗?
作为如何生成这个未解析字符串的示例:
@udf()
def execute_method():
return {"list": [{"a":1},{"b":1}{"c":1}]}
df_result = df_source.withColumn("result", execute_method())
【问题讨论】:
-
我不认为
{list=[{a=1}, {a=2}, {a=3}]}是 JSON。{list: [{a: 1}, {a: 2}, {a: 3}]}将是 -
试试
<original string name>.replace("=", ": ")。它将用冒号替换所有出现的等号。 -
不是,这正是重点。这是一个结构体的字符串表示
-
这听起来像是一个 XY 问题。这绝对是可解析的,但您应该显示返回它的代码,因为可能有一种方法可以获得对您有用的格式
-
@Cireo 使用返回此未解析字符串的代码示例更新了问题