Pandas使用df.to_csv输出时如何保留多行换行且无多余双引号
解决方案
核心逻辑是CSV标准中,分隔符、换行符本身是用来划分字段和行边界的特殊字符,若内容中包含这类字符且不想用双引号包裹边界,必须替换分隔符为内容中不存在的特殊字符,从根源避免边界识别冲突。
可直接使用的参数配置
需要同时调整sep、quoting、escapechar、lineterminator四个参数,示例代码如下:
import pandas as pd import csv # 示例DataFrame构造 df = pd.DataFrame({ "content": ["Line A) This is some sample text\n\nLine B) This text, it goes into the column in question"] }) # 导出配置 df.to_csv( "target.csv", sep="\t", # 替换为所有单元格内容中都不会出现的分隔符,可替换为|、^等罕见符号 quoting=csv.QUOTE_NONE, # 关闭自动加双引号的逻辑 escapechar="\\", # 转义字符,若内容意外出现分隔符可自动转义避免结构混乱 lineterminator="\n", # 显式指定全局行结束符,和单元格内的换行做区分 index=False )
注意事项
- 后续读取该CSV时,需要指定和导出时一致的
sep参数,即可正确识别多行内容归属同一单元格,不会出现拆分 - 如果你必须使用逗号作为CSV分隔符,该需求无法实现:逗号作为分隔符时,内容中的逗号、换行没有双引号做边界标记的话,任何CSV解析器都会将其识别为字段/行边界,必然导致内容拆分。
内容的提问来源于stack exchange,提问作者Korzak
相关产品推荐
相关产品推荐

