编写csv时避免拆分字符串列

Posted

技术标签:

【中文标题】编写csv时避免拆分字符串列【英文标题】:Avoid splitting string columns when writing csv 【发布时间】:2018-03-12 11:30:16 【问题描述】:

在数据集中,我有几列内容是可能包含逗号的名称或地址。例如,“Einstein, Albert”或“Devon St., 8”。在尝试使用 write.csv 命令写入 csv 文件时,R 在某些情况下会拆分字符串并创建额外的列:

write.csv(data, "output.csv", rownames=F, quote=F)

姓名地址号码P电话
爱因斯坦阿尔伯特街 8 8 00000000000
大卫罗莎奥乔 9 11 0000000000000

如何绕过这个问题?

【问题讨论】:

或者,您可以使用 write.table 并将分隔符更改为其他内容,例如"\t" 表示标签 我可能会尝试这种方法来避免写引号,非常感谢! 【参考方案1】:

您在对write.csv 的调用中传递的quote=F 参数可能会提示您。您告诉 R 不要引用字段,这意味着带有文字逗号的列将因此出现在带有文字逗号的输出中。改成quote=TRUE 应该可以解决这个问题:

write.csv(data, "output.csv", rownames=FALSE, quote=TRUE)

请注意,现在您的输出将用双引号对每个字段进行转义,至少那些需要它是明确的。但是,您将导入此 CSV 文件的大多数地方都知道如何处理此问题(例如 Excel)。

【讨论】:

谢谢,这很有用。我没有意识到问题来自 Quote 论点,尽管它是有道理的。我试图让我的输出不带引号,但我想如果需要我可以稍后删除它们。

以上是关于编写csv时避免拆分字符串列的主要内容,如果未能解决你的问题,请参考以下文章

根据变长分隔符拆分熊猫字符串列

python 将字符串列拆分为两列

将字符串列拆分为几个虚拟变量

如何在 BigQuery SQL 中将字符串列拆分为多行单个单词和单词对?

将 Spark Dataframe 字符串列拆分为多列

将 Spark Dataframe 字符串列拆分为多列