我有一个有名称和数字的两列CSV。有些人的名字使用逗号,例如Joe Blow, CFA。这个逗号打破了CSV格式,因为它被解释为一个新列。
我已经读过了,最常见的处方似乎是替换字符,或替换分隔符,用一个新值(例如,这个|那个|the,其他)。
我真的希望保留逗号分隔符(我知道excel支持其他分隔符,但其他解释器可能不支持)。我还想在名字中保留逗号,因为Joe Blow| CFA看起来很傻。
是否有一种方法在CSV列中包含逗号而不破坏格式,例如通过转义它们?
我有一个有名称和数字的两列CSV。有些人的名字使用逗号,例如Joe Blow, CFA。这个逗号打破了CSV格式,因为它被解释为一个新列。
我已经读过了,最常见的处方似乎是替换字符,或替换分隔符,用一个新值(例如,这个|那个|the,其他)。
我真的希望保留逗号分隔符(我知道excel支持其他分隔符,但其他解释器可能不支持)。我还想在名字中保留逗号,因为Joe Blow| CFA看起来很傻。
是否有一种方法在CSV列中包含逗号而不破坏格式,例如通过转义它们?
当前回答
您可以使用平面文件连接管理器中的Text_Qualifier字段作为“。这应该用引号来包装您的数据,并且仅用引号外的逗号分隔。
其他回答
根据您的语言,可能有to_json方法可用。这将避免破坏csv的许多事情。
你可以对你的值进行编码,例如在PHP中base64_encode($str) / base64_decode($str)
在我看来,这比双引号等更简单。
https://www.php.net/manual/en/function.base64-encode.php
编码的值永远不会包含逗号,因此CSV中的每个逗号都将是分隔符。
除了其他答案中的要点:如果你在Excel中使用引号,还有一件事要注意,那就是空格的位置。如果你有这样一行代码:
print '%s, "%s", "%s", "%s"' % (value_1, value_2, value_3, value_4)
Excel将把初始引号视为文字引号,而不是使用它来转义逗号。您的代码将需要更改为
print '%s,"%s","%s","%s"' % (value_1, value_2, value_3, value_4)
正是这种微妙把我带到了这里。
我面对同样的问题,引用,没有帮助。最终,我将,替换为+,完成了处理,将输出保存到outfile中,并将+替换为,。这可能看起来很丑,但对我来说很管用。
我发现一些应用程序,如Mac中的Numbers,如果双引号前面有空格,就会忽略它。
A, b,c不行而A, b,c可以。