【发布时间】:2020-02-21 17:37:20
【问题描述】:
我有 utf-8 编码的逗号分隔的 csv 文件,其中一列包含多个逗号,但是我需要将它们作为一列导入以进行进一步操作。 数据框看起来像
C1 C2 C3 C4 C5 C6 C7.... C27
1, 2, 3, 4, 5, A,B,C, 2 .......
3, 5, 3, 4, 6, A,B,C,D, 8 .......
1, 2, 2, 5, 8, A,B, 7 .......
3, 5, 3, 4, 6, ABCDE, 8 .......
1, 2, 3, 4, 5, A,B,C,D 2 .......
所以第6列包含一些汉字以及不同数量的逗号。第 5 列和第 7 列都是数字。数据框共有 27 列。 我希望将第 6 列中的字符视为一个单元格中的值,而不是多个变量的值。
我知道你可以先使用引号,但我想知道你会怎么做。我有 1000 多个这样的文件需要打开。
任何建议将不胜感激!
后续问题: 如果不同文件的列数不同怎么办?是否可以用正则表达式定义列的模式,先得到列数,再决定如何拆分列?
我现在正在考虑先获取每个文件的列并将它们保存到 csv 文件中,然后在可能的重复问题中使用该方法。但任何关于更有效方式的建议都将不胜感激!
【问题讨论】:
-
你不能把分隔符改成分号或制表符吗?
-
您是否可以控制这些 .CSV 文件的创建,或者它们是否来自封闭源?如果原始源程序遵循定义 .CSV 文件的 RFC 4180,它们会将 C6 括在引号中,如下所示:
1,2,3,4,5,"A,B,C",2,....或正如 @chatax 在我输入此内容时所说,将字段分隔符更改为类似这样的其他内容:1;2;3;4;5;A,B,C;2..... -
@chatax 嘿,不,我不能。它是从数据库下载的。所以不可能专门为那些没有逗号的列更改分隔符。
-
@Matthew 感谢 cmets。我不确定它们是如何创建的,但我会先尝试,然后再告诉你它是如何进行的......