Pyspark:如何在输入文件中转义反斜杠(\)

2024-09-26 17:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pyspark将csv文件加载到postgresql中。我在输入文件中有一条记录,如下所示-

Id,dept,city,name,country,state
1234,ABC,dallas,markhenry\,USA,texas

当我将其加载到postgresql数据库中时,它会像这样加载,这是不正确的-

Id   | dept| city   | name          | country | state
1234 | ABC | dallas | markhenry,USA | texas   | null

postgresdb中的正确输出应为-

Id   | dept| city   | name          | country | state
1234 | ABC | dallas | markhenry     |   USA   | texas

我正在阅读下面的文件-

input_df = spark.read.format("csv").option("quote", "\"").option("escape", "\"").option("header", 
"true").load(filepath)

是否有一种方法可以修改代码来处理数据中的反斜杠()。提前谢谢


Tags: 文件csvnameidcitypostgresqlcountryoption
1条回答
网友
1楼 · 发布于 2024-09-26 17:37:57

“quote”选项的目的是指定一个quote字符,该字符包装整个列的值。不确定这里是否需要这样做,但可以使用regexp_replace函数删除特定字符(只需按原样选择其他所有字符,并以这种方式修改name列)

from pyspark.sql.functions import *
df = spark.read.option("inferSchema", "true").option("header", "true").csv(filepath)
df2 = df.select(col("Id"), col("dept"), col("city"), regexp_replace(col("name"), "\\\\", "").alias("name"), col("country"), col("state"))
df2.show(4, False)

输出:

+  +  +   +    -+   -+  -+
|Id  |dept|city  |name     |country|state|
+  +  +   +    -+   -+  -+
|1234|ABC |dallas|markhenry|USA    |texas|
+  +  +   +    -+   -+  -+

相关问题 更多 >

    热门问题