如何使用 Ruby CSV 转换器?

2024-04-18

假设您有以下文件:

textfield,datetimefield,numfield
foo,2008-07-01 17:50:55.004688,1
bar,2008-07-02 17:50:55.004688,2

读取 .csv 的 Ruby 代码类似于:

#!/usr/bin/env ruby

require 'csv'

csv = CSV($stdin, :headers => true, :converters => :all)
csv.each do |row|
  print "#{row}"
  the_date = row['datetimefield'].to_date
end

该代码给出了以下错误消息:

./foo2.rb:8:in `block in <main>': undefined method `to_date' for "2008-07-01 17:50:55.004688":String (NoMethodError)

是什么赋予了?

我读了the docs http://www.ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html,但我不明白。

Edit:是的,我可以单独解析这些字段。这个问题的重点是我想学习如何使用记录的转换器功能。


您问的是如何使用转换器。

我的示例定义了新转换器的用法mytime。 如果可能的话,转换器 my_time 尝试构建一个时间对象。

#Define test data
src = <<csv
textfield,datetimefield,numfield
foo,2008-07-01 17:50:55.004688,1
bar,2008-07-02 17:50:55.004688,2
csv

require 'csv'
require 'time'
CSV::Converters[:mytime] = lambda{|s| 
  begin 
    Time.parse(s)
  rescue ArgumentError
    s
  end
}

csv = CSV(src, :headers => true, :converters => [:mytime])
csv.each do |row|
  print "#{row}"
  the_date = row['datetimefield'].to_date
end

使用这种技术,您还可以定义一个转换器来从类似时间的字符串创建日期。该解决方案还保留所有其他转换器。

#define test data
src = <<csv
textfield,datetimefield,numfield
foo,2008-07-01 17:50:55.004688,1
bar,2008-07-02 17:50:55.004688,2
csv

require 'csv'
require 'time'
CSV::Converters[:time2date] = lambda{|s| 
  begin 
    Time.parse(s).to_date
  rescue ArgumentError
    s
  end
}

csv = CSV(src, :headers => true, :converters => CSV::Converters.keys + [:time2date])
csv.each do |row|
  print "#{row}"
  p row['datetimefield'] #Date-field
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Ruby CSV 转换器? 的相关文章

随机推荐

  • 有关如何根据给定条件找到标记给定数组的所有元素的最小步骤数的任何提示吗?

    两个整数N lt 10 5 and K lt N给出 其中N是数组的大小A and K是我们在过程中可以选择的连续子序列的长度 每个元素A i lt 10 9 现在假设最初数组的所有元素都未标记 在每一步中 我们将选择任意长度的子序列K如果
  • 有什么方法可以改变 TortoiseHg 中图表的绘制方式吗?

    由于习惯了 ClearCase 绘制图表的方式 我乍一看发现 Mercurial 和 TortoiseHg 的方式令人困惑 This http nvie com posts a successful git branching model
  • 应用程序在 Eclipse 中运行速度更快

    我在 eclipse 中有一个可运行的 java SE 应用程序 我引导 JPA 在正常的 java 6 SE 环境中工作 对数据库中不同表的每个请求不会超过 100 毫秒 问题是 当我导出可运行的 jar 并输入 java jar mya
  • 如何用java实现搜索引擎项目

    我想在搜索引擎上实现java项目 有什么想法或者算法吗 我可以通过什么来遵循并实现这一目标 Lucene Apache Lucene 是一个完全用 Java 编写的高性能 功能齐全的文本搜索引擎库 该技术适用于几乎所有需要全文搜索的应用程序
  • 如何在 Android 的服务类中实现 BroadcastReceiver?

    我需要在我创建的 Service 类中实现 BroadcastReceiver public class MyService extends Service 在本课程中 我必须使用线程 当用户按下按钮时睡眠来实现下载模拟MyActivity
  • 平台调用 F# 回调函数

    我在 Raspberry Pi 2 ARM 7 和单声道 上使用 F 我目前正在尝试使用用 C 编写的 WiringPi 库 我已经成功地使用 P Invoke 来使用一些函数 现在我尝试使用中断 参见http wiringpi com r
  • React.js:如何在单击时附加组件?

    我是 React 新手 我对一些基本的东西感到困惑 我需要在 DOM 渲染后 在单击事件上将组件附加到 DOM 我的初步尝试如下 但没有成功 但这是我想尝试的最好的事情 提前为将 jQuery 与 React 混合而道歉 ParentCom
  • 无法加载配置类

    我正在关注this http www tutorialspoint com spring spring java based configuration htm关于如何使用 Spring 的教程并根据提供的示例 我得到以下异常 Except
  • Yesod持久类型错误

    我正在 Yesod 应用程序中尝试持久化 我的模型文件包含 Job issuer MemberId addDate UTCTime lastDate UTCTime title Text description Text deriving
  • Xcode 5 中单元测试的使用

    我正在编写我的第一个更大的 iOS 项目 我想尽可能多地使用 Xcode 5 现在我想使用测试 但我以前从未这样做过 我的项目使用来Views和动态 TableViews 我怎样才能在代码中实现测试 使其有意义 请先观看 WWDC 13 会
  • 适合约 250,000 张图像的最佳 Web 文件夹结构

    我的网站将包含大约 200 000 张图像 每张图像将被存储 3 次 全尺寸 缩略图 更大缩略图 全尺寸图像约为 50Kb 至 500Kb 普通技术 VPS 上的 Linux Apache MySQL PHP 存储这些内容以便通过浏览器快速
  • 如何监视 JavaScript 中的递归函数

    Note 我已经看到这个问题以不同的方式提出并参考不同的测试工具 我认为清楚地描述问题和解决方案会很有用 我的测试是使用编写的诗乃间谍 https sinonjs org 为了可读性并将使用运行Jest https jestjs io en
  • 如何通过 TIdHTTP 下载大文件?

    我使用此代码下载小文件 Var ms TMemoryStream begin ms TMemoryStream Create Idhttp1 get http mydomain com myfile zip ms ms SaveToFile
  • 无法连接到 VS2012 中的 localDB –“建立与 SQL Server 的连接时发生网络相关或特定于实例的错误...”

    这很奇怪 因为我能够使用相同的连接字符串通过 SSMS 2008R2 连接到 localDB Data Source LocalDB v11 0 Integrated Security true Only C 代码无法连接 我尝试增加登录时
  • 创建流而无需从中创建物理文件

    我需要创建一个包含服务器上存在的文档的 zip 文件 我使用 Net Package 类来执行此操作 并创建一个新的 Package 即 zip 文件 我必须具有物理文件或流的路径 我试图不创建一个实际的 zip 文件 而是创建一个存在于内
  • makemessages 的 Unicode 问题 --all Django 1.6.2 Python 3.3

    升级项目Python 2 7 gt 3 3 1 and 姜戈1 4 gt 1 6 2 更新代码后我们的应用程序再次运行 in py3 翻译正在从 mo files 唯一的问题是我们的旧 po文件不能与 django admin py mak
  • 在 ASP.NET 5 中动态加载程序集

    我曾经有一些代码可以扫描bin我的应用程序的目录中包含尚未加载到 AppDomain 中并加载它们的程序集 它基本上看起来像 foreach var assemblyPath in Directory GetFiles path to bi
  • 根据字符串中多个单词的精确匹配转换新列

    我有一个数据框 df lt data frame Otherspp c suck SD BT SD RS RSS Dominantspp c OM OM RSS CH Commonspp c OM Rarespp c SD NP NP re
  • 什么是 print(f"...")

    我正在阅读一个 python 脚本 该脚本接受 XML 文件的输入并输出 XML 文件 但是 我不明白打印语法 有人可以解释一下吗f in print f does args parser parser args print f Input
  • 如何使用 Ruby CSV 转换器?

    假设您有以下文件 textfield datetimefield numfield foo 2008 07 01 17 50 55 004688 1 bar 2008 07 02 17 50 55 004688 2 读取 csv 的 Rub