有没有办法在CSV列中包含逗号而不破坏格式?
我有一个两列的CSV,有一个名字和一个数字。有些人的名字使用逗号,例如有没有办法在CSV列中包含逗号而不破坏格式?,csv,Csv,我有一个两列的CSV,有一个名字和一个数字。有些人的名字使用逗号,例如Joe Blow,CFA。这个逗号打破了CSV格式,因为它被解释为一个新列 我已经读过了,最常见的方法似乎是用新值(例如,this | that | the,other)替换该字符或分隔符 我真的希望保留逗号分隔符(我知道excel支持其他分隔符,但其他解释器可能不支持)。我还想保留名称中的逗号,因为Joe Blow | CFA看起来很傻 有没有办法在CSV列中包含逗号而不破坏格式,例如通过转义它们?您需要引用该值。 是更详细
Joe Blow,CFA。
这个逗号打破了CSV格式,因为它被解释为一个新列
我已经读过了,最常见的方法似乎是用新值(例如,this | that | the,other
)替换该字符或分隔符
我真的希望保留逗号分隔符(我知道excel支持其他分隔符,但其他解释器可能不支持)。我还想保留名称中的逗号,因为Joe Blow | CFA看起来很傻
有没有办法在CSV列中包含逗号而不破坏格式,例如通过转义它们?您需要引用该值。
是更详细的规范。您需要引用该值。
是更详细的规范。用引号括起字段,例如
field1_value,field2_value,"field 3,value",field4, etc...
看
已更新:
要对引号进行编码,请使用“
,字段中的一个双引号符号将被编码为”
,整个字段将成为”
。因此,如果您在Excel中看到以下内容:
---------------------------------------
| regular_value |,,,"| ,"", |""" |"|
---------------------------------------
CSV文件将包含:
regular_value,",,,""",","""",","""""""",""""
逗号只是用引号封装的,所以,
变成,“
”
逗号和引号需要封装和引用,因此,
,“
变为”,“
将字段括在引号中,例如
field1_value,field2_value,"field 3,value",field4, etc...
看
已更新:
要对引号进行编码,请使用“
,字段中的一个双引号符号将被编码为”
,整个字段将变为”
。因此,如果您在Excel中看到以下内容:
---------------------------------------
| regular_value |,,,"| ,"", |""" |"|
---------------------------------------
CSV文件将包含:
regular_value,",,,""",","""",","""""""",""""
逗号只是用引号封装的,所以,
变成,“
”
逗号和引号需要封装和引用,因此,
,“
变成了,”
CSV格式的问题在于,没有一个规范,有几种可接受的方法,无法区分应该使用哪种方法(用于生成/解释)。我在中讨论了所有转义字符的方法(在这种情况下是换行符,但基本前提相同)。基本上,它可以归结为对目标用户使用CSV生成/转义过程,希望其他人不介意
.CSV格式的问题在于,没有一个规范,有几种可接受的方法,无法区分应该使用哪种方法(用于生成/解释)。我在中讨论了所有转义字符的方法(在这种情况下是换行符,但基本前提相同)。基本上,它可以归结为对目标用户使用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)
正是这种微妙之处把我带到了这里。除了其他答案中的要点之外:如果在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)
正是这种微妙之处把我带到了这里。如果你想做到你所说的,你可以用引号。像这样的
$name = "Joe Blow, CFA.";
$arr[] = "\"".$name."\"";
现在,您可以在name变量中使用逗号。如果您想实现您所说的,可以使用引号。像这样的
$name = "Joe Blow, CFA.";
$arr[] = "\"".$name."\"";
现在,您可以在name变量中使用逗号了。我也遇到了同样的问题,引用
,
没有帮助。最后,我将,
替换为+
,完成了处理,将输出保存到一个输出文件中,并将+
替换为,
。这可能看起来很难看,但对我来说很管用 我也遇到了同样的问题,引用,
也无济于事。最后,我将,
替换为+
,完成了处理,将输出保存到一个输出文件中,并将+
替换为,
。这可能看起来很难看,但对我来说很管用 首先,如果项目值具有双引号字符(“”),则替换为2个双引号字符(“”)
最后,包装项目值:
左侧:带双引号字符(“”)
右侧:带双引号字符(“)和逗号字符(,)
首先,如果项值具有双引号字符(“”),则替换为2个双引号字符(“”) 最后,包装项目值: 左侧:带双引号字符(“”) 右侧:带双引号字符(“)和逗号字符(,)
根据您的语言,可能有to_json方法可用。这将避免许多破坏CSV的事情 根据您的语言,可能有to_json方法可用。这将避免许多破坏CSV的事情 双引号不适用于我,它适用于我。
\“
。如果您想放置双引号作为示例,您可以设置\“\”
您可以构建公式,例如:
fprintf(strout, "\"=if(C3=1,\"\"\"\",B3)\"\n");
将以csv格式写入:
=如果(C3=1,“,B3)
双引号对我不起作用,它对我起作用。如果您想放置双引号作为示例,可以设置
\“\”
你可以