在pyp中写入CSV文件时选择编码

2024-05-18 14:22:10 发布

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

我试图在使用pyspark保存CSV压缩文件时设置正确的编码。在

我的测试是:

# read main tabular data
sp_df = spark.read.csv(file_path, header=True, sep=';', encoding='cp1252')
sp_df.show(5)
+----------+---------+--------+---------+------+
|      Date|     Zone|   Duree|     Type|Volume|
+----------+---------+--------+---------+------+
|2019-01-16|010010000| 30min3h|Etrangers|   684|
|2019-01-16|010010000| 30min3h| Français| 21771|
|2019-01-16|010010000|Inf30min|Etrangers|  7497|
|2019-01-16|010010000|Inf30min| Français| 74852|
|2019-01-16|010010000|   Sup3h|Etrangers|   429|
+----------+---------+--------+---------+------+
only showing top 5 rows

我们可以看到,使用编码CP1252对数据进行了正确的解释。问题是,当我使用CP1252编码将数据保存到CSV gzip压缩文件中并进行检查时,特殊字符没有被很好地解码:

^{pr2}$

有什么想法吗? 我用的是spark 2.3


Tags: csv数据编码dfreadmainspspark
1条回答
网友
1楼 · 发布于 2024-05-18 14:22:10

根据official documentation,编码是一个选项,您应该直接将它放在csv方法中,就像您使用它进行读取一样。在

sp_df.repartition(5, 'Zone').write.option('encoding', 'cp1252').csv(output_path, mode='overwrite', sep=';', compression='gzip')

成为

^{pr2}$

您编写它的方式被csv方法encoding=None的默认参数覆盖,这将导致UTF-8编码。在

相关问题 更多 >

    热门问题