回答
下面是一个完整的例子:
require 'csv'
require 'date'
str = <<_
2004-1-30,foo
2004-11-20,bar
_
File.write('a',str)
CSV::Converters[:cdate] = lambda do |s|
begin
Date.strptime(s,"%Y-%m-%d").strftime("%-m/%d/%Y")
rescue ArgumentError
s
end
end
CSV.foreach('a',:converters => :cdate) do |row|
p row
end
# >> ["1/30/2004", "foo"]
# >> ["11/20/2004", "bar"]
看的Converters
的文档。
从处理定制转换的转换器
Hash
和/或lambdas
名称Array。 单个转换器不必位于阵列中。所有内置转换器在转换之前都会尝试将字段转码为UTF-8。如果数据无法转码,转换将失败,并保持字段不变。
谢谢,奥雅纳。我实际上盯着Converters文档一段时间,并试图手动运行一些转换器,但无法制作它的头部或尾部。我最终得出结论,他们是输入格式器,而不是输出格式器。无论如何,现在我已经有了你的一些示例代码,我会回去尝试去理解它。 –
@PeterAlfvin **请记住** *转换器*仅适用于阅读'CSV'文件。 –
嗯。那么有什么办法可以将常规的'Date'对象提供给'CSV.generate'并通过CSV控制它将它变成字符串时发生了什么?或者所有的对象都通过'.to_s'变成字符串,或者像处理的第一步那样? –
- 1. Ruby CSV输入值格式
- 2. 如何使用XUnit控制台输出NUnit格式的xml?
- 3. 控制台输出格式
- 4. 控制台输出格式
- 5. ruby输出格式
- 6. 使用ruby控制文本模式控制台输出的方法
- 7. Ruby和控制台输出
- 8. Python CSV输出格式
- 9. 简单的控制台输出格式
- 10. 格式化Rails的控制台输出
- 11. 如何在Ruby中使用%来格式化字符串输出?
- 12. 使用printf输出格式?
- 13. 使用“打印”字典时的控制台输出格式
- 14. 格式化控制台输出
- 15. 格式[R控制台输出
- 16. C++控制台 - 格式化输出
- 17. Python YAML:控制输出格式
- 18. 格式化C++控制台输出
- 19. 如何使用输出缓冲控制?
- 20. 如何在使用FileHelpers编写CSV文件时控制日期的输出格式?
- 21. 如何格式化/控制Symfony ChoiceType的输出
- 22. 如何控制Data :: Dumper输出的格式?
- 23. 如何控制xs:decimal值的XSLT输出格式?
- 24. 如何控制ASP.Net Web服务中的输出格式
- 25. CSV格式的开始作业输出
- 26. Unix的Df -k以csv格式输出
- 27. 使用多个SQL查询输出为CSV格式,使用PHP
- 28. 如何使用sed格式化输出
- 29. 如何在Vim quickfix中控制错误输出格式?
- 30. 如何日志在控制台输出(Microsoft.Extensions.Logging)格式化
''1/30/2004''它是“日/月/年”吗? –
@ArupRakshit更有可能[月/日/年](http://en.wikipedia.org/wiki/Calendar_date#Gregorian.2C_month-day-year)。这是美国常用的格式。 – Ajedi32
@ Ajedi32我总是和这个混淆......:p常识在世界上我们从来没有月#30 .. –