【问题标题】:Pyspark - Reading a csv file and retaining the original special charactersPyspark - 读取 csv 文件并保留原始特殊字符
【发布时间】:2021-01-26 07:16:07
【问题描述】:

我正在读取一个 csv 文件,其中只有如下数据

Country        State      City
MÉXICO         Neu Leon   Monterrey    
MÉXICO         Chiapas    ATLÁNTICO

我尝试在 pyspark 数据帧中使用 encoding = 'utf8' 和 'ISO-8859-1' 读取文件,但值正在发生变化,如下所示 -

in option("encoding", "utf-8")

Country          State      City
M�XICO         Neu Leon   Monterrey    
M�XICO         Chiapas    ATL�NTICO

in option("encoding", "ISO-8859-1")

Country        State      City
M?XICO         Neu Leon   Monterrey    
M?XICO         Chiapas    ATL?NTICO

这里是 spark 读取语句

spark.read.format("csv").option("quote", "\"").option("escape", "\"").option('multiLine', True).option("encoding", "ISO-8859-1").option("header", "true").load("country.csv")

option("encoding", "mbcs") 和 option("encoding", "ansi") 给出错误。

如何保留输入文件中的原始文本?提前致谢

【问题讨论】:

  • 您声明的编码是用于写入文件的编码吗?
  • 我正在进行编码以读写两者。我想要的只是保留输入文件中的原始特殊文本而不是更改它。我该怎么做
  • 已经回答here
  • 我已经尝试过使用 option("encoding", "ISO-8859-1")。它没有给出相同的结果。有没有可能它不能与 multiline = true 选项一起使用

标签: python pandas pyspark


【解决方案1】:

不编码再读入,然后新建一列:

df.withColumn("some_col_name", decode(col("column_name"), "ISO-8859-1"))

# One of these will give you what you need. ('US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多