FasterCSV:几个分隔符

2023-12-08

我的 Rails3 应用程序解析用户上传的 CSV 文件。
正如预期的那样,用户上传制表符分隔和逗号分隔的文件。
我想两者都支持。

My code:

input = CSV.read(uploaded_io.tempfile, { encoding: "UTF-8", :col_sep => "\t"})

问题:如何更改它以支持逗号?

FasterCSV 的文档将 col_sep 描述为The String placed between each field. so :col_sep => ",\t"行不通的。

注意:里面的所有数据都是整数或标识符,所以有人使用的概率\t or ,内容(不是分隔符)内的值为零。因此,我不想明确阻止在同一文件中使用两个不同的分隔符。


解决方案一:

一种简单的方法是让用户通过下拉菜单选择他们在 CSV 文件中使用的分隔符,然后只需在CSV.read()称呼。但我猜你想要它自动。 :-)

解决方案2:

您可以使用常规读入 CSV 文件的第一行File.read()并通过将第一行与/,/然后反对/\t/...根据正则表达式匹配,您可以选择分隔符CSV.read()调用相应的(单个)分隔符。然后你读入文件CSV.read(..., :col_sep => single_separator )因此。

但要注意:

乍一看,它看起来漂亮又优雅,想要使用",\t"作为方法调用中的分隔符以允许两者 - 但请注意,这可能会引入一个可能令人讨厌的错误!

如果 CVS 文件偶然或偶然同时包含制表符和逗号...那么您会怎么做? 两者分开?你怎么能确定?我认为这是一个错误,因为 CSV 分隔符在常规 CSV 文件中不会像这样出现“混合”——它总是要么',' or "\t"

所以我认为你不应该使用",\t"——这可能会导致巨大的问题,这可能就是他们没有实施/允许的原因col_sep接受正则表达式的选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FasterCSV:几个分隔符 的相关文章

  • Rails 4 - 如何链接到 PDF 文件(名称.PDF)?

    我正在生成 PDF 文件 我的链接如下所示 当我点击这个时 它会带我去 display invoice 123456789 这是一个 HTML 版本 在控制器中的操作如下 def display invoice if params invo
  • 转储 YAML 时如何强制使用双引号?

    我有一个小脚本来自动化 YAML 文件中的一些操作 我读取原始 YAML 文件并将其转换为哈希 然后dump http ruby doc org stdlib 1 8 6 libdoc yaml rdoc YAML html method
  • Ruby 中的并行赋值运算符

    我正在查看 Ruby 编程 书中的一个示例 def fib up to max i1 i2 1 1 parallel assignment i1 1 and i2 1 while i1 lt max yield i1 i1 i2 i2 i1
  • 捆绑安装无法从 https://rubygems.org/ 获取规格

    我正在尝试遵循 Hartl Rails 教程 但在使用捆绑器 gem 时遇到了问题 使用命令 bundle install 或 bundle update 时 我得到以下输出 从中获取源索引https rubygems org https
  • 可以覆盖/实现的 ruby​​ 运算符列表

    是否有可以覆盖的所有 ruby 运算符的列表 不是那些不能的 Here s Ruby 运算符表 http phrogz net programmingruby language html table 18 4 方法和可重载的有 Elemen
  • 如何从 Ruby 程序发送邮件?

    我想从 Ruby 应用程序发送电子邮件 核心语言中是否有调用来执行此操作 或者是否有我应该使用的库 最好的方法是什么 如果你不想使用行动邮递员 http wiki rubyonrails org rails pages ActionMail
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company
  • Nokogiri 保持 HTML 实体不变

    我希望 Nokogiri 保持 HTML 实体不变 但它似乎正在将实体转换为实际的符号 例如 Nokogiri HTML fragment p reg p to s 结果是 p p 似乎没有什么可以将原始 HTML 返回给我 inner h
  • rvm gem 安装错误?

    我正在摆弄 ruby gems 和 rvm 它工作得很好 但现在当我尝试安装 gem 时出现错误 gem install Rails错误 同时 执行 gem Errno EACCES 权限被拒绝 Users da rvm gems ruby
  • 没有要加载的文件 - ffi_c (LoadError)

    这个问题困扰了我几天 每当我使用 bring to front 方法时 require rubygems require watir browser Watir Browser new browser bring to front 我收到此
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • 如何从 Ruby 中的特定相对路径加载文件?

    我正在制作一颗供内部使用的宝石 在其中 我从另一个目录加载一些 YAML in
  • 什么是适合 Rails 3 的测试框架?

    去年我一直在使用 Ruby On Rails 但是 无法进行单元测试 现在我必须编写单元测试代码 哪个测试框架好 为什么 有这方面的好的教程吗 我的系统配置 Ruby 1 9 2 Rails 3 Ubuntu 10 第一个技巧是 尝试升级到
  • Watir Webdriver 加载 Chrome 扩展

    我正在尝试使用 Watir 加载 chrome 扩展 但遇到了问题 我发现这个相关问题 能够启动带有 watir webdriver 加载扩展的 chrome https stackoverflow com questions 125867
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 如何声明依赖于参数化任务的 Rake 任务?

    我见过一些任务具有参数和依赖项任务的示例 例如 task name first name last name gt pre name do t args args with defaults first name gt John last
  • 在 Rails 项目中保存自定义异常定义的常规位置是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当创建自己的自定义异常时 例如 class ThingExploded lt StandardError end class ThingIsMi
  • sqlite3-ruby gem:无法构建 gem 本机扩展

    Update 看看这个后续问题 Windows 上的 Gem 更新 它坏了吗 https stackoverflow com questions 134581 gem update on windows is it broken 在 Win

随机推荐

  • 在 DirectShow 中预览相机并捕获静态图像 - 在 VB.net 中

    我正在尝试在 Visual Studio 2008 中编写一个程序 该程序将访问网络摄像头 在屏幕上显示预览 然后在按下按钮时保存静态快照 jpg 稍后我将把它与数据库集成 但我不应该对那部分有问题 经过一些研究后 看起来 DirectSh
  • 正则表达式从代码中删除方法

    使用正则表达式 我尝试从以下代码中删除所有方法 函数 不考虑 全球范围 但是 我无法使其与方法的所有内部内容匹配
  • 请求多个 API 并在 SQLITE 上存储多个表的最佳方式

    问题是 如何在sqlite上存储 我的意思是如何在 2 个表上存储 2 个 API 数据 我有多个 API 来获取和存储缓存中的数据 目前 我一项一项地做 如下所示 按下按钮 await HelperDatabase1 storeRegis
  • 在 App Engine 上设置 Memcached 以进行 Django 会话缓存

    当设置 Django 使用 Memcached 进行缓存时 在我的例子中 我想使用会话缓存 settings py we set CACHES default BACKEND django core cache backends memca
  • Swift:数组排序未正确完成

    我用它来对 Swift 数组中的组件进行排序 myArray myArray sorted 0 localizedCaseInsensitiveCompare 1 NSComparisonResult OrderedAscending 但是
  • 如何在 x86_64 上的前 4GB 内“malloc”

    平台 Mac OS X郎 Obj C C 是否有可能以某种方式使 malloc 在进程地址空间的前 4GB 内分配内存 我正在模拟 i386 堆栈 需要保证地址位于允许的 32 位范围内 使用 mmap MAP FIXED 需要在任何 ma
  • 如何在 Verilog 中定义带参数的模块?

    我想定义一个add有一个参数的模块 但我对新实例的声明进展不顺利 我想定义这个模块的一个实例 module add parameter wd 1 input wire wd 1 0 a b output wire wd 1 0 o assi
  • 将自定义对象的 ArrayList 写入文件

    我有一个 ArrayList 其中包含自定义服务对象 我想将整个 ArrayList 写入一个文件 然后能够读取它 我尝试了 Gson 但它给了我一个 IllegalStateException Expected BEGIN ARRAY b
  • 将可见性绑定到 DataContext

    我有一个值转换器 可以将 null 转换为 Visibility Collapsed 现在我尝试在用户控件中使用它 以便当 DateContext 为 null 时整个控件会崩溃 该控件如下所示
  • 对多个列使用 CROSS APPLY

    使用 SQL Server 第 3 天 我正在尝试将 2 列分隔数据合并为表值函数的一个输出 这是我的数据 我希望处理数据并将其放入以下格式的表中 我目前trying使用这个 CROSS APPLY SQL 语句 但我不知道我在做什么 US
  • AngularJS - 将 ngTouch 重定向与 ngRoute 一起使用不适用于 href 和 ng-click 属性

    我使用 ngRoute 浏览应用程序 我使用如下链接 a href page2 Link a 由于我使用 ngTouch 导航不适用于触摸设备 我用 Android 手机和 Chrome 的设备模拟器尝试过 在桌面上一切正常 当我删除 ng
  • VSTO WPF ContextMenu.MenuItem 单击未引发的 TaskPane 外部

    当光标位于任务窗格之外时 不会引发上下文菜单项的单击事件 我不知道如何让它发挥作用 90 的情况下 单击是在任务窗格之外进行的 打开上下文菜单时 子菜单通常显示在任务窗格之外 见下图 在这种情况下 不会引发上下文菜单中的单击事件 我完全不知
  • 在scrapy框架python中为start_urls列表中的url构建正则表达式

    我对 scrapy 很陌生 之前也没有使用过正则表达式 以下是我的spider py code class ExampleSpider BaseSpider name test code allowed domains www exampl
  • 为什么同步睡眠函数没有通过在 Promise 中实现异步? [复制]

    这个问题在这里已经有答案了 我正在尝试了解 Promise 以及 JavaScript 如何与其队列和事件循环等一起工作 我认为如果我将一个慢速同步函数放入一个承诺中 该慢速同步函数将被委托给后台 我可以使用 then完成后处理它 func
  • 优化(几乎最小化)jqueryui 菜单的宽度

    我有一个Jqueryui菜单这是在运行时生成的 AJAX 它是生成的 HTML is ul li li li the system li li the agenda li ul 首先 li li 是故意的行分隔符 其他列表项都包含单个单词
  • 从图像 numpy 生成一批克隆

    我有一个numpy数组 图像 称为a这个尺寸 3 128 192 现在我想创建一个 numpy 数组 其中包含n的副本a其尺寸如下 n 3 128 192 是否存在一个 numpy 函数可以在不使用循环指令的情况下帮助我解决这个问题 只需使
  • 在 iPhone 中的 Facebook 上分享捆绑包中的图像和链接

    我想从我的 iPhone 应用程序分享图像 链接等到 Facebook 我的应用程序链接 位置 名称和描述已成功发布 但我无法分享图像 请按照我的代码 UIImage image UIImage imageNamed sample png
  • 在asp.net中使用Http模块配置ETag

    我正在通过 seo 优化和 yslow 来优化我们公司的网站 但在 yslow 中 ETAGS 是 F 我浏览了数十个网站和教程 最好的选择是使用 HTTP 模块 我已经这样做并尝试了几个模块 但没有显示结果 也许语法中的某些内容是错误的
  • 对对象数组中相似的键求和

    我有一个如下所示的对象数组 name P1 value 150 name P1 value 150 name P2 value 200 name P3 value 450 我需要将同名对象的所有值相加 可能还有其他数学运算 例如计算平均值
  • FasterCSV:几个分隔符

    我的 Rails3 应用程序解析用户上传的 CSV 文件 正如预期的那样 用户上传制表符分隔和逗号分隔的文件 我想两者都支持 My code input CSV read uploaded io tempfile encoding UTF