-6ren"> -尝试使用 Ruby CSV 解析此文件。 https://www.sec.gov/files/data/broker-dealers/company-information-about-active--6ren">
gpt4 book ai didi

ruby-on-rails - CSV::MalformedCSVError:新行必须为 <"\n\r">

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:11 25 4
gpt4 key购买 nike

尝试使用 Ruby CSV 解析此文件。

https://www.sec.gov/files/data/broker-dealers/company-information-about-active-broker-dealers/bd070219.txt

但是,我遇到了一个错误。

CSV.open(file_name, "r", { :col_sep => "\t", :row_sep => "\n\r" }).each do |row|
puts row
end

CSV::MalformedCSVError: New line must be <"\n\r"> not <"\r"> in line 1.

最佳答案

Windows row_sep 是 "\r\n",而不是 "\n\r"。但是,此 CSV 格式不正确。使用十六进制编辑器查看它似乎正在使用 "\r\r\n"

它是制表符分隔的。

此外,它没有使用正确的引号,第 247 行有 600 "B"STREET STE。 2204,所以你需要关闭引号字符。

quote_char: nil, col_sep: "\t", row_sep: "\r\r\n"

末尾有一个额外的制表符,每行以\t\r\r\n结尾。您还可以将其视为使用 "\r\n" 的 row_sep 和一个额外的 \r 字段。

quote_char: nil, col_sep: "\t", row_sep: "\r\n"

或者您可以将其视为具有 \t\r\r\n 的 row_sep 并且没有额外的字段。

quote_char: nil, col_sep: "\t", row_sep: "\t\r\r\n"

无论哪种方式,都是一团糟。


我使用 hex editor 将文件作为文本和原始数据并排查看。这让我看到了行尾真正的内容。

87654321  0011 2233 4455 6677 8899 aabb ccdd eeff  0123456789abcdef                       
00000000: 3030 3030 3030 3139 3034 0941 4252 4148 0000001904.ABRAH
00000010: 414d 2053 4543 5552 4954 4945 5320 434f AM SECURITIES CO
00000020: 5250 4f52 4154 494f 4e09 3030 3832 3934 RPORATION.008294
00000030: 3532 0933 3732 3420 3437 5448 2053 5452 52.3724 47TH STR
00000040: 4545 5420 4354 2e20 4e57 0920 0947 4947 EET CT. NW. .GIG
00000050: 2048 4152 424f 5209 5741 0939 3833 3335 HARBOR.WA.98335
00000060: 090d 0d0a 3030 3030 3030 3233 3033 0950 ....0000002303.P
^^^^^^^^^

Hex 09 0d 0d 0a\t\r\r\n

或者,您可以使用 p 打印行,任何不可见的字符都会显示出来。

f = File.open(file_name)
p f.readline

"0000001904\tABRAHAM SECURITIES CORPORATION\t00829452\t3724 47TH STREET CT. NW\t \tGIG HARBOR\tWA\t98335\t\r\r\n"

关于ruby-on-rails - CSV::MalformedCSVError:新行必须为 <"\n\r">,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com