提问人:Mariano Cacchiarelli 提问时间:10/27/2023 最后编辑:wernerMariano Cacchiarelli 更新时间:10/30/2023 访问量:37
Spark - 读取带引号的 csv 文件
Spark - Read csv file with quotes
问:
我们在 csv 文件中包含以下内容:
DI_SEQUENCE_NUMBER;DI_OPERATION_TYPE;MANDT;SPRAS;MVGR2;BEZEI;SRC_SYSTEM;LOAD_DATE;ODQ_CHANGEMODE;ODQ_ENTITYCNTR
76;"I";"220";"E";"200";"SAUGNAPF:BX75P:30/60M.FILT;G3/8""AU1/8"";"D16";"20231017T114626";"C";1
77;"I";"220";"E";"201";"COMPOTS AND FRUIT DRINKS";"D16";"20231017T114626";"C";1
第 76 行导致了问题,我们找不到正确的选项来正确读取。导致问题的部分是“SAUGNAPF:BX75P:30/60M。菲尔特;G3/8“”AU1/8“”。生成此csv文件的系统原始文本是SAUGNAPF:BX75P:30/60M。菲尔特;G3/8“”AU1/8”。
我们尝试了: 选项(“引用”, “”“) 选项(“转义”,“”“)
但没有运气
我们尝试了: 选项(“引用”, “”“) 选项(“转义”,“”“)
我们希望将其作为输出
答:
0赞
Rushikesh
10/28/2023
#1
quote
在这种情况下,选项似乎不起作用。我读取数据时没有任何显示列值的选项,例如:escape
“SAUGNAPF:BX75P:30/60M。菲尔特;G3/8“”AU1/8“”
为了删除开头和结尾引号,我使用了regexp_replace。
spark.read.csv(sep=";", header=True, path=<file_path>) \
.withColumn("BEZEI", f.regexp_replace("BEZEI", "^[\"]|[\"]$", ''))
0赞
shalnarkftw
10/30/2023
#2
我认为您在设置选项时需要转义双引号:
.option("quote", "\"")
.option("escape", "\"")
如果您有包含多行的数据,则需要添加.option("multiline", True)
如果字段值之间有额外的空格,则还应添加
.option("ignoreLeadingWhiteSpace", true)
我希望它对你有用。
评论