Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RAILS 3 CSV“;“非法引用”;这是一个谎言_Ruby On Rails_Ruby_Csv - Fatal编程技术网

Ruby on rails RAILS 3 CSV“;“非法引用”;这是一个谎言

Ruby on rails RAILS 3 CSV“;“非法引用”;这是一个谎言,ruby-on-rails,ruby,csv,Ruby On Rails,Ruby,Csv,我在分析CSV文件时遇到问题,出现以下错误: CSV::MalformedCSV错误:第3行上的非法报价 有问题的RAILS代码: csv = CSV.read(args.local_file_path, col_sep: "\t", headers: true) CSV文件中的第3行是: A-067067 VO VIA CE 0 8 8 SWCH Ter 4, Loc Is Here, Mne, Per Fl

我在分析CSV文件时遇到问题,出现以下错误:

CSV::MalformedCSV错误:第3行上的非法报价

有问题的RAILS代码:

csv = CSV.read(args.local_file_path, col_sep: "\t", headers: true)
CSV文件中的第3行是:

A-067067        VO  VIA CE  0   8   8   SWCH            Ter 4, Loc Is Here, Mne,    Per Fl                                  Auia/Sey    IMAC            NEK_HW      2011-03-09 09:47:44 2011-03-09 11:50:26 2011-01-13 10:49:17 2011-02-14 14:02:43 2011-02-14 14:02:44 0   0   771 771 46273   "[O/H 15/02] B270 W31 ""TEXT TEXT 2 X TEXT SWITC"   SOME_TEXT       SOME_TEXT       N/A Name Here                               RESOLVED_CLOSED RESOLVED_CLOSED
更新:上面的选项卡似乎没有出现。请参见pastebin原始文本:

我在StackOverflow和Google上读过很多关于为什么会这样的帖子,我理解这一点。但是上面的CSV行有完全合法的引用,不是吗? CSV是以制表符分隔的,并且只有一个制表符跟在相关列两侧的引号后面。该字段中有1个引号,它被双引号转义。那么是什么原因呢?我想不出来(


假设我这里出了问题,我希望解决方案包括一种解决问题的方法,因为我无法控制CSV的构造方式。

您的CSV的这一部分有问题:

46273   "[O/H 15/02] B270 W31 ""TEXT TEXT 2 X TEXT SWITC"   SOME_TEXT
这些零件中至少有一个具有杂散空间:

46273   "
"   SOME_TEXT
我猜“3”和double应该由一个或多个制表符分隔,但在引号之前有一个空格。或者,在另一端的引号之后有一个空格,而在结束引号和“S”之间应该只有制表符

CSV通过将双引号加倍来转义双引号,因此:

"[O/H 15/02] B270 W31 ""TEXT TEXT 2 X TEXT SWITC"
应为包含嵌入报价的单个字段:

[O/H 15/02] B270 W31 "TEXT TEXT 2 X TEXT SWITC
如果在第一个引号之前或最后一个引号之后有空格,那么由于字段是以制表符分隔的,因此字段中有一个不带空格的双引号,这就是“非法引号”错误的来源


尝试通过
cat-t
(应将选项卡表示为
^I
)发送您的CSV文件,以查找散乱空间的位置。

您的CSV的这部分有故障:

46273   "[O/H 15/02] B270 W31 ""TEXT TEXT 2 X TEXT SWITC"   SOME_TEXT
这些零件中至少有一个具有杂散空间:

46273   "
"   SOME_TEXT
我猜“3”和double应该由一个或多个制表符分隔,但在引号之前有一个空格。或者,在另一端的引号之后有一个空格,而在结束引号和“S”之间应该只有制表符

CSV通过将双引号加倍来转义双引号,因此:

"[O/H 15/02] B270 W31 ""TEXT TEXT 2 X TEXT SWITC"
应为包含嵌入报价的单个字段:

[O/H 15/02] B270 W31 "TEXT TEXT 2 X TEXT SWITC
如果在第一个引号之前或最后一个引号之后有空格,那么由于字段是以制表符分隔的,因此字段中有一个不带空格的双引号,这就是“非法引号”错误的来源


请尝试通过
cat-t
(应将选项卡表示为
^I
)发送您的CSV文件,以查找散乱空间的位置。

啊,我刚检查过,在复制粘贴到Stackoverflow中似乎没有遇到选项卡。请在pastebin中查看原始文本:[snip,请稍候]@S.Richmond:该pastebin解析得很好。你确定这是第三行吗?@S.Richmond:也很好。删除标题行并逐个添加其余行,直到其中断。啊,我刚刚检查过,在copy-n-paste to Stackoverflow中似乎没有遇到制表符。请在pastebin上查看原始文本:[剪贴,请稍候]@S.Richmond:该pastebin解析得很好。你确定这是第三行吗?@S.Richmond:也可以。删除标题行,然后逐个添加其余行,直到行中断。