本文简要介绍ruby语言中 CSV.convert
的用法。
用法
convert(converter_name) → array_of_procs
convert {|field, field_info| ... } → array_of_procs
-
没有块,安装一个现场转换器(Proc)。
-
使用块,定义并安装自定义字段转换器。
-
返回已安装字段转换器的数组。
-
参数
converter_name
如果给定,应该是现有字段转换器的名称。
请参阅现场转换器。
没有块,安装一个现场转换器:
csv = CSV.new('')
csv.convert(:integer)
csv.convert(:float)
csv.convert(:date)
csv.converters # => [:integer, :float, :date]
如果给定,则为每个字段调用该块:
-
参数
field
是字段值。 -
参数
field_info
是一个CSV::FieldInfo
对象,其中包含有关该字段的详细信息。
此处的示例假定事先执行:
string = "foo,0\nbar,1\nbaz,2\n"
path = 't.csv'
File.write(path, string)
给出块的示例:
csv = CSV.open(path)
csv.convert {|field, field_info| p [field, field_info]; field.upcase }
csv.read # => [["FOO", "0"], ["BAR", "1"], ["BAZ", "2"]]
输出:
["foo", #<struct CSV::FieldInfo index=0, line=1, header=nil>] ["0", #<struct CSV::FieldInfo index=1, line=1, header=nil>] ["bar", #<struct CSV::FieldInfo index=0, line=2, header=nil>] ["1", #<struct CSV::FieldInfo index=1, line=2, header=nil>] ["baz", #<struct CSV::FieldInfo index=0, line=3, header=nil>] ["2", #<struct CSV::FieldInfo index=1, line=3, header=nil>]
该块不需要返回 String 对象:
csv = CSV.open(path)
csv.convert {|field, field_info| field.to_sym }
csv.read # => [[:foo, :"0"], [:bar, :"1"], [:baz, :"2"]]
如果给出converter_name
,则不调用该块:
csv = CSV.open(path)
csv.convert(:integer) {|field, field_info| fail 'Cannot happen' }
csv.read # => [["foo", 0], ["bar", 1], ["baz", 2]]
如果 converter_name
不是内置字段转换器的名称,则引发 parse-time 异常:
csv = CSV.open(path)
csv.convert(:nosuch) => [nil]
# Raises NoMethodError (undefined method `arity' for nil:NilClass)
csv.read
相关用法
- Ruby CSV.converters用法及代码示例
- Ruby CSV.col_sep用法及代码示例
- Ruby CSV.csv << row用法及代码示例
- Ruby CSV.header_convert用法及代码示例
- Ruby CSV.skip_lines用法及代码示例
- Ruby CSV.table用法及代码示例
- Ruby CSV.force_quotes?用法及代码示例
- Ruby CSV.unconverted_fields?用法及代码示例
- Ruby CSV.generate_line用法及代码示例
- Ruby CSV.shift用法及代码示例
- Ruby CSV.skip_blanks?用法及代码示例
- Ruby CSV.read用法及代码示例
- Ruby CSV.row_sep用法及代码示例
- Ruby CSV.header_row?用法及代码示例
- Ruby CSV.headers用法及代码示例
- Ruby CSV.encoding用法及代码示例
- Ruby CSV.each用法及代码示例
- Ruby CSV.return_headers?用法及代码示例
- Ruby CSV.line用法及代码示例
- Ruby CSV.parse_line用法及代码示例
- Ruby CSV.parse用法及代码示例
- Ruby CSV.line_no用法及代码示例
- Ruby CSV.instance用法及代码示例
- Ruby CSV.liberal_parsing?用法及代码示例
- Ruby CSV.new用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 CSV.convert。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。