首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby CSV:如何读取制表符分隔的文件?

Ruby CSV:如何读取制表符分隔的文件?
EN

Stack Overflow用户
提问于 2015-07-24 23:25:45
回答 3查看 8.9K关注 0票数 9
代码语言:javascript
运行
复制
CSV.open(name, "r").each do |row|
  puts row
end

我得到了以下错误:

代码语言:javascript
运行
复制
CSV::MalformedCSVError Unquoted fields do not allow \r or \n 

文件的名称是.txt制表符分隔的文件。我特意做的。我有一个.csv文件,我去excel,并将文件保存为以.txt制表符分隔的文件。因此它是制表符分隔的。

CSV.open不应该能够读取制表符分隔的文件吗?

EN

回答 3

Stack Overflow用户

发布于 2015-07-24 23:40:39

尝试按如下方式指定字段分隔符:

代码语言:javascript
运行
复制
CSV.open("name", "r", { :col_sep => "\t" }).each do |row|
  puts row
end

记住要使用require 'csv'并阅读DOCS

票数 12
EN

Stack Overflow用户

发布于 2015-07-24 23:40:04

默认情况下,CSV使用逗号作为分隔符,这是因为CSV代表“逗号分隔值”。

如果你想要一个不同的分隔符(在本例中是制表符),你需要显式地使用它。

示例

代码语言:javascript
运行
复制
p CSV.new("aaa\tbbb\tccc\nddd\teee", col_sep: "\t").read

相关文档:http://ruby-doc.org/stdlib-2.1.0/libdoc/csv/rdoc/CSV.html#new

票数 3
EN

Stack Overflow用户

发布于 2021-10-31 23:58:40

作为CSV的替代方案,您也可以像这样使用smarter_csv

代码语言:javascript
运行
复制
require 'smarter_csv'

data = SmarterCSV.process(filename, col_sep: "\t")

如果使用smarter_csv >= 1.4.2,还可以执行以下操作:

代码语言:javascript
运行
复制
require 'smarter_csv'

data = SmarterCSV.process(filename, col_sep: :auto)

SmarterCSV将返回一个散列数组,并且可以进行批处理

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31614330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档