我有一个有名称和数字的两列CSV。有些人的名字使用逗号,例如Joe Blow, CFA。这个逗号打破了CSV格式,因为它被解释为一个新列。
我已经读过了,最常见的处方似乎是替换字符,或替换分隔符,用一个新值(例如,这个|那个|the,其他)。
我真的希望保留逗号分隔符(我知道excel支持其他分隔符,但其他解释器可能不支持)。我还想在名字中保留逗号,因为Joe Blow| CFA看起来很傻。
是否有一种方法在CSV列中包含逗号而不破坏格式,例如通过转义它们?
我有一个有名称和数字的两列CSV。有些人的名字使用逗号,例如Joe Blow, CFA。这个逗号打破了CSV格式,因为它被解释为一个新列。
我已经读过了,最常见的处方似乎是替换字符,或替换分隔符,用一个新值(例如,这个|那个|the,其他)。
我真的希望保留逗号分隔符(我知道excel支持其他分隔符,但其他解释器可能不支持)。我还想在名字中保留逗号,因为Joe Blow| CFA看起来很傻。
是否有一种方法在CSV列中包含逗号而不破坏格式,例如通过转义它们?
当前回答
如果你想证明你所说的,你可以用引号。就像这样
$name = "Joe Blow, CFA.";
$arr[] = "\"".$name."\"";
现在,你可以在name变量中使用逗号。
其他回答
你需要引用这些值。 这是一个更详细的规范。
你可以使用模板字面值(模板字符串)
例如,
`"${item}"`
CSV文件实际上可以使用不同的分隔符进行格式化,逗号只是默认值。
您可以使用sep标志为CSV文件指定分隔符。
只需添加一行sep=;作为CSV文件中的第一行,也就是说,如果您希望分隔符为分号。您可以将其更改为任何其他字符。
要对包含逗号(,)或双引号(")字符的字段进行编码,请将字段用双引号括起来:
field1,"field, 2",field3, ...
文字双引号字符通常由一对双引号("")表示。例如,只包含一个双引号字符的字段被编码为""""。
例如:
Sheet: |Hello, World!|You "matter" to us.|
CSV: "Hello, World!","You ""matter"" to us."
更多示例(sheet→csv):
正则值→正则值 新鲜,棕色“鸡蛋”→“新鲜,棕色”“鸡蛋”“” →"""" ","→""",""" " …"→"…""" ,"",→",""""," """→""""""""
看到维基百科。
也许不是这里所需要的,但这是一个非常古老的问题,答案可能会帮助到其他人。我发现用不同的分隔符导入Excel的一个技巧是在文本编辑器中打开文件并添加第一行,如下所示:
9月= |
其中|是你希望Excel使用的分隔符。 或者你也可以改变Windows中的默认分隔符,但有点啰嗦:
控制面板>时钟和区域>区域>格式>附加>数字>列表分隔符[由逗号改为您的首选选项]。这意味着Excel也将默认使用所选分隔符导出csv。