我有一个管道分隔的文件。如何处理内容中的反斜杠和管道
这是输入
col1|col2|col3|col4
123|"\|"|""|2020.01.31 12:00:30
456|"\"|""|2020.01.31 12:00:30
678|"|"|""|2020.01.31 12:00:30
我试过下面的选项
data = spark.read.format("com.databricks.spark.csv")\
.option("inferSchema", "true")\
.option('header','true')\
.option('delimiter','|')\
.option("quote", '"')\
.option("escape","|")\
.option("escape", "\\")\
.option("timestampFormat", "yyyy.mm.dd hh:mm:ss")\
.load('s3://dummybucket/a.csv')
我的输出是
col1|col2|col3|col4
123|"\\|"|""|2020-01-31T00:00:30.000Z
456|"\"|\""|2020-01-31T00:00:30.000Z|""
678|"|"|""|2020-01-31T00:00:30.000Z
预期产量
col1|col2|col3|col4
123|"\|"|""|2020-01-31T00:00:30.000Z
456|"\"|""|2020-01-31T00:00:30.000Z
678|"|"|""|2020-01-31T00:00:30.000Z
1条答案
按热度按时间kokeuurv1#
你已经宣布
escape
两次。但是,一个数据集只能定义一次属性。您只需要定义一次。默认情况下
escape
将\
如果未定义(请链接此处)。您已将引号字符定义为
"
. 转义字符用于转义引号字符。例如"show this \""
会屈服的show this "
如果引号字符是"
逃跑是\
.对于这个特定的示例,您需要
escape
控制字符,例如#
或任何不出现在引号字符前的值"
. 因此你不能使用|
如第1行的报价前所示。你也不能用\
如第2行报价前所示。必须为指定一个值
escape
由于默认值为\
. 这将为你打破2号线。