親愛的朋友們,
我有一個csv和它看起來像這樣
‡‡Id‡‡,‡‡版本‡‡,‡‡問卷‡‡,‡‡日期‡‡
‡‡123456‡‡,‡‡Version2‡‡,‡‡所有問題回答準確
和指導問卷是理解和遵循的‡‡,‡‡2010-12-16 00:01:48.020000000‡‡
有一個額外的輸入線”和指導問卷是理解和遵循“這一部分是一個新行csv。源文件編碼utf - 16 BOM。
在每一行的末尾,我有CRLF最後每個輸入額外的行,我有低頻
我應該提及我的代碼類似lineSep \ r \ n,但如何?
我寫了下麵的代碼來讀取這個csv
dff = spark.read。選項(“頭”,“真正的”)\
.option (“inferSchema”,“真正的”)\
.option(“多行”,“真正的”)\
.option(“編碼”,“utf - 16”) \
.option(“分隔符”、“‡‡,‡‡”)\
. csv (“/ mnt /道路/ data.csv”)
dffs_headers = dff.dtypes
因為我在dffs_headers:
columnLabel =我[0]
newColumnLabel = columnLabel.replace (“‡‡’,”) .replace (“‡‡“,”)
的dff = dff.withColumn (newColumnLabel regexp_replace (columnLabel ' ^ \ \‡‡| \ \‡‡美元","))
如果columnLabel ! = newColumnLabel:
dff = dff.drop (columnLabel)
顯示器(dff)
但是,在給定Id的結果是不正確的,問卷列數據是打破後“所有問題回答準確並顯示在下一行。我希望整個textbetween doubledagger”‡‡,‡‡”解讀為一行,即使有任何額外的輸入線。
請幫朋友@Aviral Bhardwaj
@DataBricksHelp232 @Rahul@Databricks @Uma Dacharla @Uma Maheswara Rao Desula
這是工作好,
從pyspark.sql。功能的進口regexp_replace路徑= " dbfs: / FileStore / df /測試。csv“dff = spark.read。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“多行”,“真正的”)。選項(“編碼”,“utf - 8”)。選項(“分隔符”、“‡‡,‡‡”). csv(路徑)我在dffs_headers: columnLabel =我[0]newColumnLabel = columnLabel.replace (“‡‡’,”) .replace (“‡‡’,”) dff = dff.withColumn(的newColumnLabel, regexp_replace (columnLabel,“^ \ \‡‡| \ \‡‡美元“,”)如果columnLabel ! = newColumnLabel: dff = dff.drop (columnLabel) dff.show(截斷= False)
請選擇我的答案為最佳答案,這將是一個巨大的幫助
謝謝
Aviral Bhardwaj