Apache Spark 如何在字符串列scala中替换\”with

bn31dyow  于 2023-02-09  发布在  Apache
关注(0)|答案(1)|浏览(147)

我有一列格式错误的嵌套json字符串,我想用regexp_replace编辑它,这样scala就可以把它作为一个结构体来读取,我想用"替换Json中的每一项,随机添加了\"

{
{"id": "1", "json": [
{ \"details\": {\n \"name\" : \"john\", \n \"lastname\" : \"doe"\ \n},
\"location\": {\n  \"city\" : \"new york\", \n \"country\" : \"usa\" \n} },
{ \"details\": {\n \"name\" : \"jane\", \n \"lastname\" : \"random"\ \n},
\"location\": {\n  \"city\" : \"new york\", \n \"country\" : \"usa\" \n} },
] },
{"id": "2", "json": [
{ \"details\": {\n \"name\" : \"jack\", \n \"lastname\" : \"ryan"\ \n},
\"location\": {\n  \"city\" : \"york\", \n \"country\" : \"uk\" \n} },
{ \"details\": {\n \"name\" : \"jill\", \n \"lastname\" : \"test"\ \n},
\"location\": {\n  \"city\" : \"LA\", \n \"country\" : \"usa\" \n} },
] }
}

我能够删除\nregexp_replace,但我挣扎与\" Package 每个项目。

var newdf = df.withcolumn( "clean_json",
  regexp_replace(regexp_replace(col("json"), "\n", ""), """\"""", "\\\""))

我尝试使用\\\"""作为转义字符。似乎没有任何效果

waxmsbnn

waxmsbnn1#

如果要替换\,则应替换为\\\\

df = spark.createDataFrame(['\\"'], StringType()).toDF('value')
df.withColumn('new_value', f.regexp_replace('value', '\\\\"', '')).show(truncate=False)

+-----+---------+
|value|new_value|
+-----+---------+
|\"   |         |
+-----+---------+

相关问题