csv文件中分隔符和值之间的空格

csv文件中分隔符和值之间的空格,csv,Csv,希望确认与csv格式相关的内容。我正在将文件加载到数据库中,并使用括在中的双引号作为双引号,因为在我的csv中可能会出现某些字段包含双引号之间的值的情况—这是正常的。然而,有时我得到的文件中,分隔符和双引号之间有一种情况,例如空格,这给我的代码带来了问题,我的代码将其视为值,例如: 1, "value1",something 在这种情况下,第二个位置的值将作为以下内容插入数据库: spacespace"value1" 提供csv的我的客户声称这是正常的,我的代码应该将value1作为值放

希望确认与csv格式相关的内容。我正在将文件加载到数据库中,并使用括在中的双引号作为双引号,因为在我的csv中可能会出现某些字段包含双引号之间的值的情况—这是正常的。然而,有时我得到的文件中,分隔符和双引号之间有一种情况,例如空格,这给我的代码带来了问题,我的代码将其视为值,例如:

1,   "value1",something
在这种情况下,第二个位置的值将作为以下内容插入数据库:

spacespace"value1"

提供csv的我的客户声称这是正常的,我的代码应该将
value1
作为值放入数据库。然而,据我所知,这是不正确的,因为在这种情况下,空间属于值,所以封闭的空间不能正常工作。我说的对吗?在这种特殊情况下,我可以参考什么文件来向客户解释他所说的不是真的,在这种情况下他应该避免空格,否则它将属于价值。谢谢。

csv没有真正的标准。但是,有一个列表列出了一些规则/信息

关于示例csv:

1,   "value1",something
这实际上可能被视为无效的csv数据,因为在实践中,如果分隔符和第一个双引号之间有空格,一些csv解析器将抛出错误

但是,如果该行被解析,则应删除/跳过
前面的空格

但对于下一行,一般规则是保留空格,因为它们位于引号内:

1,"   value1",something

当然,最好的选择是(让您的客户)首先生成正确的csv数据。

csv没有真正的标准。不过,有一些标准列出了一些规则/信息

关于示例csv:

1,   "value1",something
这实际上可能被视为无效的csv数据,因为在实践中,如果分隔符和第一个双引号之间有空格,一些csv解析器将抛出错误

但是,如果该行被解析,则应删除/跳过
前面的空格

但对于下一行,一般规则是保留空格,因为它们位于引号内:

1,"   value1",something

当然,最好的选择是(让您的客户)首先生成正确的csv数据。

@melpomene首先,我写的对吗?在该链接中找不到任何相关内容-您使用的是哪句话?“将记录划分为由分隔符分隔的字段(通常是单个保留字符,如逗号、分号或制表符;有时分隔符可能包含可选空格)”。。。“如果没有其他信息(如是否遵守RFC 4180),则声明为“CSV”格式的文件没有完全指定”。。。“在一些CSV实现中,前导和尾随空格和制表符被修剪(忽略)。RFC 4180禁止这种修剪,它规定“空格被视为字段的一部分,不应被忽略。”@melpomene表示我所写的是正确的:“空格被视为字段的一部分,不应被忽略。”然而,当我把它展示给顾客时,他可以说——你们知道,但有一个词“应该”,所以并没有义务……@melpomene首先,我写的对吗?在该链接中找不到任何相关内容-您使用的是哪句话?“将记录划分为由分隔符分隔的字段(通常是单个保留字符,如逗号、分号或制表符;有时分隔符可能包含可选空格)”。。。“如果没有其他信息(如是否遵守RFC 4180),则声明为“CSV”格式的文件没有完全指定”。。。“在一些CSV实现中,前导和尾随空格和制表符被修剪(忽略)。RFC 4180禁止这种修剪,它规定“空格被视为字段的一部分,不应被忽略。”@melpomene表示我所写的是正确的:“空格被视为字段的一部分,不应被忽略。”然而,当我把它展示给客户时,他可以说——你们知道,但有一个词“应该”,所以并没有义务……我同意它是否在引号内,但如果不是全部价值作为价值进行交易,甚至包括引号作为价值部分和非封闭部分。@DinoDinn是的,不同的解析器会以不同的方式处理这个问题。这就是为什么它不应该被接受为有效的csv。我会推动客户端提供有效的csv,生成正确的csv比在读取时修复要容易得多(并且可能会在以后导致额外的问题-软件/解析器的更新等等)。@DinoDinn如果您必须自己修复此问题:您可以修剪左空格,但只删除两个外部双引号(不要修剪所有双引号)并用一个双引号替换2个双引号——因为您可以使用“monitor 17”“。您说:“这就是为什么它不应被接受为有效的csv”,但我可以参考wht文档来确认这一点吗?@DinoDinn 1)关于这一点并没有真正的文档/标准,但数据库的解析器保留空格这一事实可能是最好的证明/论据。2) 一些链接:--我同意它是否在引号内,但如果不是整个值作为值进行交易,甚至包括引号作为值部分和非封闭部分。@DinoDinn是的,不同的解析器将以不同的方式处理此问题。这就是为什么它不应该被接受为有效的csv。我会推动客户端提供有效的csv,生成正确的csv比在读取时修复要容易得多(并且可能会在以后导致额外的问题-软件/解析器的更新等等)。@DinoDinn如果您必须自己修复此问题:您可以修剪左空格,但只删除两个外部双引号(不要修剪所有双引号)并用一个双引号替换2个双引号——因为您可以使用“monitor 17”“。您说:“这就是为什么它不应被接受为有效的csv”,但我可以参考wht文档来确认这一点吗?@DinoDinn 1)关于这一点并没有真正的文档/标准,但是,数据库的解析器保留这些空间的事实可能是t