如何让PyArrow CSV写入器不为字符串值添加双引号包裹
PyArrow导出CSV时字符串自动加双引号的解决方法
问题原因
你遇到的所有字符串字段被自动包裹双引号的问题,是PyArrow CSV写入器的默认配置导致的:默认quoting_style参数为all,会对所有非数值类型字段强制添加双引号,和pandas默认仅对含特殊字符的字段加引号的逻辑不同。
可用配置项
PyArrow的csv.WriteOptions提供了quoting_style参数控制引号添加逻辑,支持4种配置值:
all:默认值,所有非数值、非布尔类型的字段全部加双引号minimal:仅当字段值包含分隔符、引号字符、换行符时才加双引号,和pandas默认导出行为完全一致,是绝大多数场景下的推荐选项none:完全关闭自动加双引号逻辑,注意:如果字符串字段内包含你设置的|分隔符、换行符等特殊字符,导出的CSV会出现列解析错位问题,无特殊需求不建议使用non_numeric:给所有非数值类型字段加双引号,和all逻辑接近,区别是不会给布尔值字段加引号
修改后的代码示例
如果要实现和pandas一致的无多余双引号导出效果,代码如下:
import pyarrow.csv as csv write_options = csv.WriteOptions( include_header=True, delimiter='|', quoting_style="minimal" ) csv.write_csv(table, 'myfile.csv', write_options)
如果你确定所有字符串字段都不含特殊字符,要完全移除所有双引号,把上面代码里的quoting_style参数值改为"none"即可。
内容的提问来源于stack exchange,提问作者Hasham
相关产品推荐
相关产品推荐

