るりまサーチ (Ruby 2.6.0)

最速Rubyリファレンスマニュアル検索!
45件ヒット [1-45件を表示] (0.026秒)

別のキーワード

  1. _builtin |
  2. set |
  3. ipaddr |
  4. array |
  5. integer |

クラス

キーワード

検索結果

CSV::Table#[](index) -> CSV::Row | [String] | nil (622.0)

ミックスモードでは、このメソッドは引数に行番号を指定すれば行単位で動作 し、ヘッダの名前を指定すれば列単位で動作します。

...ヘッダの名前を指定すれば列単位で動作します。

このメソッドを呼び出す前に CSV::Table#by_col! を呼び出すとカラム
モードになります。また CSV::Table#by_row! を呼び出すとロウモード
になります。

@param index ミックスモード・...
...][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "row2_2"])
table = CSV::Table.new([row1, row2])

# ミックスモード
p table.mode # => :col_or_row
p table[0] # => #<CSV::Row "header1":"...
...row1_1" "header2":"row1_2">
p table[1] # => #<CSV::Row "header1":"row2_1" "header2":"row2_2">
p table["header2"] # => ["row1_2", "row2_2"]
p table[0..1] # => [#<CSV::Row "header1":"row1_1" "header2":"row1_2">, #<CSV::Row "header1":"row2_1" "header2":"row2_2">]

# カラムモード
tabl...

CSV::Table#[](range) -> [CSV::Row]| [Array] | nil (622.0)

ミックスモードでは、このメソッドは引数に行番号を指定すれば行単位で動作 し、ヘッダの名前を指定すれば列単位で動作します。

...ヘッダの名前を指定すれば列単位で動作します。

このメソッドを呼び出す前に CSV::Table#by_col! を呼び出すとカラム
モードになります。また CSV::Table#by_row! を呼び出すとロウモード
になります。

@param index ミックスモード・...
...][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "row2_2"])
table = CSV::Table.new([row1, row2])

# ミックスモード
p table.mode # => :col_or_row
p table[0] # => #<CSV::Row "header1":"...
...row1_1" "header2":"row1_2">
p table[1] # => #<CSV::Row "header1":"row2_1" "header2":"row2_2">
p table["header2"] # => ["row1_2", "row2_2"]
p table[0..1] # => [#<CSV::Row "header1":"row1_1" "header2":"row1_2">, #<CSV::Row "header1":"row2_1" "header2":"row2_2">]

# カラムモード
tabl...

CSV#headers -> Array | true | nil (616.0)

nil を返した場合は、ヘッダは使用されません。 真を返した場合は、ヘッダを使用するが、まだ読み込まれていません。 配列を返した場合は、ヘッダは既に読み込まれています。

...は既に読み込まれています。

//emlist[例][ruby]{
require "csv"

csv
= CSV.new("header1,header2\nrow1_1,row1_2")
csv
.headers # => nil
csv
= CSV.new("header1,header2\nrow1_1,row1_2", headers: true)
csv
.headers # => true
csv
.read
csv
.headers # =>["header1", "header2"]
//}

@see CSV.new...

CSV#col_sep -> String (388.0)

カラム区切り文字列として使用する文字列を返します。

..."csv"

users =<<-EOS
id|first name|last name|age
1|taro|tanaka|20
2|jiro|suzuki|18
3|ami|sato|19
4|yumi|adachi|21
EOS

csv
= CSV.new(users, headers: true, col_sep: "|")
csv
.col_sep # => "|"
csv
.first.to_a # => [["id", "1"], ["first name", "taro"], ["last name", "tanaka"], ["age", "20"]]

csv
= CSV....
...new(users, headers: true)
csv
.col_sep # => ","
csv
.first.to_a # => [["id|first name|last name|age", "1|taro|tanaka|20"]]
//}

@see CSV.new...

CSV::Table#delete_if {|column_name, values| ... } -> self (388.0)

ブロックを評価した結果が真である行か列を削除します。

...mlist[例 ロウモード][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "valid"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "invalid"])
row3 = CSV::Row.new(["header1", "header2"], ["row3_1", "valid"])
table = CSV::Table.new([row1, row2, row3])
table.delet...
...", "valid"]]
//}

//emlist[例 カラムモード][ruby]{
require "csv"
row1 = CSV::Row.new(["id", "name"], [1, "tanaka"])
row2 = CSV::Row.new(["id", "name"], [2, "suzuki"])
row3 = CSV::Row.new(["id", "name"], [3, "sato"])
table = CSV::Table.new([row1, row2, row3])
table.by_col!
table.delete_if { |c...
...olumn_name, values| column_name == "id" }
table.to_a # => [["name"], ["tanaka"], ["suzuki"], ["sato"]]
//}

@see CSV::Table#delete...

絞り込み条件を変える

CSV::Table#delete_if {|row| ... } -> self (388.0)

ブロックを評価した結果が真である行か列を削除します。

...mlist[例 ロウモード][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "valid"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "invalid"])
row3 = CSV::Row.new(["header1", "header2"], ["row3_1", "valid"])
table = CSV::Table.new([row1, row2, row3])
table.delet...
...", "valid"]]
//}

//emlist[例 カラムモード][ruby]{
require "csv"
row1 = CSV::Row.new(["id", "name"], [1, "tanaka"])
row2 = CSV::Row.new(["id", "name"], [2, "suzuki"])
row3 = CSV::Row.new(["id", "name"], [3, "sato"])
table = CSV::Table.new([row1, row2, row3])
table.by_col!
table.delete_if { |c...
...olumn_name, values| column_name == "id" }
table.to_a # => [["name"], ["tanaka"], ["suzuki"], ["sato"]]
//}

@see CSV::Table#delete...

CSV::Table#each {|column_name, values| ... } -> self (388.0)

デフォルトのミックスモードかロウモードでは、行単位で繰り返します。カラ ムモードでは、ブロックに列名と対応する値の配列を与え、列単位で繰り返し ます。

...equire "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "row2_2"])
row3 = CSV::Row.new(["header1", "header2"], ["row3_1", "row3_2"])
table = CSV::Table.new([row1, row2, row3])
table.each { |row| p row }

# => #<CSV::Row "...
..._1" "header2":"row1_2">
# => #<CSV::Row "header1":"row2_1" "header2":"row2_2">
# => #<CSV::Row "header1":"row3_1" "header2":"row3_2">
//}

//emlist[例 カラムモード][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2...
..."], ["row2_1", "row2_2"])
row3 = CSV::Row.new(["header1", "header2"], ["row3_1", "row3_2"])
table = CSV::Table.new([row1, row2, row3])
table.by_col!
table.each { |column_name, values| print column_name, values, "\n" }

# => header1["row1_1", "row2_1", "row3_1"]
# => header2["row1_2", "row2_2", "row3...

CSV::Table#each {|row| ... } -> self (388.0)

デフォルトのミックスモードかロウモードでは、行単位で繰り返します。カラ ムモードでは、ブロックに列名と対応する値の配列を与え、列単位で繰り返し ます。

...equire "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "row2_2"])
row3 = CSV::Row.new(["header1", "header2"], ["row3_1", "row3_2"])
table = CSV::Table.new([row1, row2, row3])
table.each { |row| p row }

# => #<CSV::Row "...
..._1" "header2":"row1_2">
# => #<CSV::Row "header1":"row2_1" "header2":"row2_2">
# => #<CSV::Row "header1":"row3_1" "header2":"row3_2">
//}

//emlist[例 カラムモード][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2...
..."], ["row2_1", "row2_2"])
row3 = CSV::Row.new(["header1", "header2"], ["row3_1", "row3_2"])
table = CSV::Table.new([row1, row2, row3])
table.by_col!
table.each { |column_name, values| print column_name, values, "\n" }

# => header1["row1_1", "row2_1", "row3_1"]
# => header2["row1_2", "row2_2", "row3...

CSV#each {|row| ... } -> nil (385.0)

各行に対してブロックを評価します。

...

//emlist[例 CSV.new 時に :header => true を指定した場合][ruby]{
require "csv"

users = <<CSV
id,first name,last name,age
1,taro,tanaka,20
2,jiro,suzuki,18
3,ami,sato,19
4,yumi,adachi,21
CSV

csv
= CSV.new(users, headers: true)
csv
.each do |row|
p row
end

# => #<CSV::Row "id":"1" "fi...
..."tanaka" "age":"20">
# => #<CSV::Row "id":"2" "first name":"jiro" "last name":"suzuki" "age":"18">
# => #<CSV::Row "id":"3" "first name":"ami" "last name":"sato" "age":"19">
# => #<CSV::Row "id":"4" "first name":"yumi" "last name":"adachi" "age":"21">
//}

//emlist[例 CSV.new 時に :header => true...
...を指定しない場合][ruby]{
require "csv"

users = <<CSV
id,first name,last name,age
1,taro,tanaka,20
2,jiro,suzuki,18
3,ami,sato,19
4,yumi,adachi,21
CSV

csv
= CSV.new(users)
csv
.each do |row|
p row
end

# => ["id", "first name", "last name", "age"]
# => ["1", "taro", "tanaka", "20"]
# => ["...

CSV#convert {|field, field_info| ... } (352.0)

引数 name で指定した変換器かブロックに各フィールドを渡して文字列から別 のオブジェクトへと変換します。

...フィールドを渡して文字列から別
のオブジェクトへと変換します。

引数 name を指定した場合は、組み込みの CSV::Converters を変換器
として利用するために使います。また、独自の変換器を追加することもできま
す。

ブロッ...
... CSV::FieldInfo のインス
タンスを受け取ります。ブロックは変換後の値かフィールドそのものを返さな
ければなりません。

@param name 変換器の名前を指定します。

//emlist[例 name で Converter を指定][ruby]{
require "csv"

csv
= CSV.new("...
...07-09,2018-07-10")
csv
.convert(:date)
csv
.read # => 2018-07-09 ((2458309j,0s,0n),+0s,2299161j)>, #<Date: 2018-07-10 ((2458310j,0s,0n),+0s,2299161j)>
//}

//emlist[例 ブロックを指定][ruby]{
require "csv"

csv
= CSV.new("date1,date2\n2018-07-09,2018-07-10", headers: true)
csv
.convert do |fiel...

絞り込み条件を変える

CSV#convert {|field| ... } (352.0)

引数 name で指定した変換器かブロックに各フィールドを渡して文字列から別 のオブジェクトへと変換します。

...フィールドを渡して文字列から別
のオブジェクトへと変換します。

引数 name を指定した場合は、組み込みの CSV::Converters を変換器
として利用するために使います。また、独自の変換器を追加することもできま
す。

ブロッ...
... CSV::FieldInfo のインス
タンスを受け取ります。ブロックは変換後の値かフィールドそのものを返さな
ければなりません。

@param name 変換器の名前を指定します。

//emlist[例 name で Converter を指定][ruby]{
require "csv"

csv
= CSV.new("...
...07-09,2018-07-10")
csv
.convert(:date)
csv
.read # => 2018-07-09 ((2458309j,0s,0n),+0s,2299161j)>, #<Date: 2018-07-10 ((2458310j,0s,0n),+0s,2299161j)>
//}

//emlist[例 ブロックを指定][ruby]{
require "csv"

csv
= CSV.new("date1,date2\n2018-07-09,2018-07-10", headers: true)
csv
.convert do |fiel...

CSV#header_convert {|field, field_info| ... } (352.0)

CSV#convert に似ていますが、ヘッダ行用のメソッドです。

...
CSV
#convert に似ていますが、ヘッダ行用のメソッドです。

このメソッドはヘッダ行を読み込む前に呼び出さなければなりません。

@param name 変換器の名前を指定します。

//emlist[例 name を指定][ruby]{
require "csv"

csv
= CSV.new("heade...
...1,row1_2", headers: true)
csv
.header_convert(:symbol)
csv
.first.headers # => [:header1, :header2]
//}

//emlist[例 ブロックを指定][ruby]{
require "csv"

csv
= CSV.new("header1,header2\nrow1_1,row1_2", headers: true)
csv
.header_convert do |field|
field.to_sym
end
csv
.first.headers # => [:he...
...ader1, :header2]
//}

@see CSV#header_converters, CSV#convert...

CSV#header_convert {|field| ... } (352.0)

CSV#convert に似ていますが、ヘッダ行用のメソッドです。

...
CSV
#convert に似ていますが、ヘッダ行用のメソッドです。

このメソッドはヘッダ行を読み込む前に呼び出さなければなりません。

@param name 変換器の名前を指定します。

//emlist[例 name を指定][ruby]{
require "csv"

csv
= CSV.new("heade...
...1,row1_2", headers: true)
csv
.header_convert(:symbol)
csv
.first.headers # => [:header1, :header2]
//}

//emlist[例 ブロックを指定][ruby]{
require "csv"

csv
= CSV.new("header1,header2\nrow1_1,row1_2", headers: true)
csv
.header_convert do |field|
field.to_sym
end
csv
.first.headers # => [:he...
...ader1, :header2]
//}

@see CSV#header_converters, CSV#convert...

CSV::FieldInfo#header -> String | nil (349.0)

利用可能な場合はヘッダを表す文字列を返します。

...返します。

//emlist[例][ruby]{
require 'csv'

csv
= CSV.new("date1,date2\n2018-07-09,2018-07-10", headers: true)
csv
.convert do |field,field_info|
p field_info.header
Date.parse(field)
end
p csv.first

# => "date1"
# => "date2"
# => #<CSV::Row "date1":#<Date: 2018-07-09 ((2458309j,0s,0n),...

CSV::Row#delete_if {|header, field| ... } -> self (349.0)

与えられたブロックにヘッダとフィールドのペアを渡して評価します。 評価した結果が真である場合に、その組を自身から削除します。

...require "csv"

row = CSV::Row.new(["header1", "header2", "header3", "header4"], ["valid1", "valid2", "invalid", "valid4"])

row # => #<CSV::Row "header1":"valid1" "header2":"valid2" "header3":"invalid" "header4":"valid4">
row.delete_if { |header, field| field == "invalid" }
row # => #<CSV::Row "hea...

絞り込み条件を変える

CSV::Row#each {|header, field| ... } -> self (349.0)

与えられたブロックにヘッダとフィールドの組を渡して評価します。

...ドの組を渡して評価します。

@return メソッドチェーンのために自身を返します。

//emlist[例][ruby]{
require "csv"

row = CSV::Row.new(["header1", "header2", "header3", "header4"], [1, 2, 3, 4])
row.each { |header, field| puts "#{header} - #{field}" }

# => header1 - 1...

CSV::Table#[](header) -> [String] | [nil] (322.0)

ミックスモードでは、このメソッドは引数に行番号を指定すれば行単位で動作 し、ヘッダの名前を指定すれば列単位で動作します。

...ヘッダの名前を指定すれば列単位で動作します。

このメソッドを呼び出す前に CSV::Table#by_col! を呼び出すとカラム
モードになります。また CSV::Table#by_row! を呼び出すとロウモード
になります。

@param index ミックスモード・...
...][ruby]{
require "csv"

row1 = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])
row2 = CSV::Row.new(["header1", "header2"], ["row2_1", "row2_2"])
table = CSV::Table.new([row1, row2])

# ミックスモード
p table.mode # => :col_or_row
p table[0] # => #<CSV::Row "header1":"...
...row1_1" "header2":"row1_2">
p table[1] # => #<CSV::Row "header1":"row2_1" "header2":"row2_2">
p table["header2"] # => ["row1_2", "row2_2"]
p table[0..1] # => [#<CSV::Row "header1":"row1_1" "header2":"row1_2">, #<CSV::Row "header1":"row2_1" "header2":"row2_2">]

# カラムモード
tabl...

CSV#gets -> Array | CSV::Row (319.0)

String や IO をラップしたデータソースから一行だけ読み込んで フィールドの配列か CSV::Row のインスタンスを返します。

...ールドの配列か CSV::Row のインスタンスを返します。

データソースは読み込み用にオープンされている必要があります。

@return ヘッダを使用しない場合は配列を返します。
ヘッダを使用する場合は CSV::Row を返します...
...

//emlist[例][ruby]{
require "csv"

csv
= CSV.new(DATA.read)
csv
.readline # => ["header1", "header2"]
csv
.readline # => ["row1_1", "row1_2"]

__END__
header1,header2
row1_1,row1_2
//}...

CSV#readline -> Array | CSV::Row (319.0)

String や IO をラップしたデータソースから一行だけ読み込んで フィールドの配列か CSV::Row のインスタンスを返します。

...ールドの配列か CSV::Row のインスタンスを返します。

データソースは読み込み用にオープンされている必要があります。

@return ヘッダを使用しない場合は配列を返します。
ヘッダを使用する場合は CSV::Row を返します...
...

//emlist[例][ruby]{
require "csv"

csv
= CSV.new(DATA.read)
csv
.readline # => ["header1", "header2"]
csv
.readline # => ["row1_1", "row1_2"]

__END__
header1,header2
row1_1,row1_2
//}...

CSV#shift -> Array | CSV::Row (319.0)

String や IO をラップしたデータソースから一行だけ読み込んで フィールドの配列か CSV::Row のインスタンスを返します。

...ールドの配列か CSV::Row のインスタンスを返します。

データソースは読み込み用にオープンされている必要があります。

@return ヘッダを使用しない場合は配列を返します。
ヘッダを使用する場合は CSV::Row を返します...
...

//emlist[例][ruby]{
require "csv"

csv
= CSV.new(DATA.read)
csv
.readline # => ["header1", "header2"]
csv
.readline # => ["row1_1", "row1_2"]

__END__
header1,header2
row1_1,row1_2
//}...

絞り込み条件を変える

CSV#read -> [Array] | CSV::Table (316.0)

残りの行を読み込んで配列の配列を返します。 self の生成時に headers オプションに偽でない値が指定されていた場合は CSV::Table オブジェクトを返します。

...い値が指定されていた場合は CSV::Table オブジェクトを返します。

データソースは読み込み用にオープンされている必要があります。

//emlist[例 headers: false][ruby]{
require "csv"

csv
= CSV.new(DATA.read)
csv
.read
# => [["header1", "header2"], ["ro...
..._1", "row1_2"], ["row2_1", "row2_2"]]

__END__
header1,header2
row1_1,row1_2
row2_1,row2_2
//}

//emlist[例 headers: true][ruby]{
require "csv"

csv
= CSV.new(DATA.read, headers: true)
csv
.read
# => #<CSV::Table mode:col_or_row row_count:3>

__END__
header1,header2
row1_1,row1_2
row2_1,row2_2
//}...

CSV#readlines -> [Array] | CSV::Table (316.0)

残りの行を読み込んで配列の配列を返します。 self の生成時に headers オプションに偽でない値が指定されていた場合は CSV::Table オブジェクトを返します。

...い値が指定されていた場合は CSV::Table オブジェクトを返します。

データソースは読み込み用にオープンされている必要があります。

//emlist[例 headers: false][ruby]{
require "csv"

csv
= CSV.new(DATA.read)
csv
.read
# => [["header1", "header2"], ["ro...
..._1", "row1_2"], ["row2_1", "row2_2"]]

__END__
header1,header2
row1_1,row1_2
row2_1,row2_2
//}

//emlist[例 headers: true][ruby]{
require "csv"

csv
= CSV.new(DATA.read, headers: true)
csv
.read
# => #<CSV::Table mode:col_or_row row_count:3>

__END__
header1,header2
row1_1,row1_2
row2_1,row2_2
//}...

CSV::Row#[](header_or_index, minimum_index = 0) -> object | nil (316.0)

ヘッダの名前かインデックスで値を取得します。フィールドが見つからなかった場合は nil を返します。

...の名前を探します。
重複しているヘッダがある場合に便利です。

//emlist[例][ruby]{
require "csv"

row = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])

row.field("header1") # => "row1_1"
row.field("header2") # => "row1_2"
row["header1"]...

CSV::Row#field(header_or_index, minimum_index = 0) -> object | nil (316.0)

ヘッダの名前かインデックスで値を取得します。フィールドが見つからなかった場合は nil を返します。

...の名前を探します。
重複しているヘッダがある場合に便利です。

//emlist[例][ruby]{
require "csv"

row = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])

row.field("header1") # => "row1_1"
row.field("header2") # => "row1_2"
row["header1"]...

CSV#external_encoding -> Encoding | nil (313.0)

IO#external_encoding に委譲します。

IO#external_encoding に委譲します。

絞り込み条件を変える

CSV#flock(operation) -> 0 | false (313.0)

File#flock に委譲します。

File#flock に委譲します。

CSV#fsync -> 0 | nil (313.0)

IO#fsync に委譲します。

IO#fsync に委譲します。

CSV#internal_encoding -> Encoding | nil (313.0)

IO#internal_encoding に委譲します。

IO#internal_encoding に委譲します。


@see IO#internal_encoding

CSV#pid -> Integer | nil (313.0)

IO#pid に委譲します。

IO#pid に委譲します。


@see IO#pid

CSV::Row#delete(header_or_index, minimum_index = 0) -> [object, object] | nil (313.0)

ヘッダの名前かインデックスで行からフィールドを削除するために使用します。

...by]{
require "csv"

row = CSV::Row.new(["header1", "header2"], ["row1_1", "row1_2"])

row # => #<CSV::Row "header1":"row1_1" "header2":"row1_2">
row.delete("header1")
row # => #<CSV::Row "header2":"row1_2">
//}

//emlist[例 ヘッダの index で指定][ruby]{
require "csv"

row = CSV::Row.new(["he...
...w # => #<CSV::Row "header1":"row1_1" "header2":"row1_2">
row.delete(0)
row # => #<CSV::Row "header2":"row1_2">
//}

//emlist[例 ヘッダの名前と offset で指定][ruby]{
require "csv"

row = CSV::Row.new(["header1", "header2", "header1"], ["row1_1", "row1_2", "row1_3"])

row # => #<CSV::Row "h...
...eader1":"row1_1" "header2":"row1_2" "header1":"row1_3">
row.delete("header1", 1)
row # => #<CSV::Row "header1":"row1_1" "header2":"row1_2">
//}

@see CSV::Row#field...

絞り込み条件を変える

CSV#force_quotes? -> bool (154.0)

出力される全てのフィールドがクオートされる場合は、真を返します。

...]{
require "csv"

rows = [["header1", "header2"], ["row1_1,", "row1_2"]]
result = CSV.generate(force_quotes: false) do |csv|
rows.each { |row| csv << row }
csv
.force_quotes? # => false
end
print result

# => header1,header2
# "row1_1,",row1_2
//}

//emlist[例][ruby]{
require "csv"

rows = [[...
..."header1", "header2"], ["row1_1,", "row1_2"]]
result = CSV.generate(force_quotes: true) do |csv|
rows.each { |row| csv << row }
csv
.force_quotes? # => true
end
print result

# => true
# => "header1","header2"
# "row1_1,","row1_2"
//}

@see CSV.new...

CSV#<<(row) -> self (82.0)

自身に row を追加します。

...m row 配列か CSV::Row のインスタンスを指定します。
CSV
::Row のインスタンスが指定された場合は、CSV::Row#fields の値
のみが追加されます。

//emlist[例 配列を指定][ruby]{
require "csv"

File.write("test.csv", <<CSV)
id,first name...
...i,adachi,21
CSV

CSV
.open("test.csv", "a") do |csv|
csv
.puts(["5", "saburo", "kondo", "34"])
end

print File.read("test.csv")
# => id,first name,last name,age
# 1,taro,tanaka,20
# 2,jiro,suzuki,18
# 3,ami,sato,19
# 4,yumi,adachi,21
# 5,saburo,kondo,34
//}

//emlist[例 CSV::Row を...
...ruby]{
require "csv"

File.write("test.csv", <<CSV)
id,first name,last name,age
1,taro,tanaka,20
2,jiro,suzuki,18
3,ami,sato,19
4,yumi,adachi,21
CSV

CSV
.open("test.csv", "a") do |csv|
row = CSV::Row.new(["id", "first name", "last name", "age"], ["5", "saburo", "kondo", "34"])
csv
.add_row(row)
en...

CSV#add_row(row) -> self (82.0)

自身に row を追加します。

...m row 配列か CSV::Row のインスタンスを指定します。
CSV
::Row のインスタンスが指定された場合は、CSV::Row#fields の値
のみが追加されます。

//emlist[例 配列を指定][ruby]{
require "csv"

File.write("test.csv", <<CSV)
id,first name...
...i,adachi,21
CSV

CSV
.open("test.csv", "a") do |csv|
csv
.puts(["5", "saburo", "kondo", "34"])
end

print File.read("test.csv")
# => id,first name,last name,age
# 1,taro,tanaka,20
# 2,jiro,suzuki,18
# 3,ami,sato,19
# 4,yumi,adachi,21
# 5,saburo,kondo,34
//}

//emlist[例 CSV::Row を...
...ruby]{
require "csv"

File.write("test.csv", <<CSV)
id,first name,last name,age
1,taro,tanaka,20
2,jiro,suzuki,18
3,ami,sato,19
4,yumi,adachi,21
CSV

CSV
.open("test.csv", "a") do |csv|
row = CSV::Row.new(["id", "first name", "last name", "age"], ["5", "saburo", "kondo", "34"])
csv
.add_row(row)
en...

CSV#puts(row) -> self (82.0)

自身に row を追加します。

...m row 配列か CSV::Row のインスタンスを指定します。
CSV
::Row のインスタンスが指定された場合は、CSV::Row#fields の値
のみが追加されます。

//emlist[例 配列を指定][ruby]{
require "csv"

File.write("test.csv", <<CSV)
id,first name...
...i,adachi,21
CSV

CSV
.open("test.csv", "a") do |csv|
csv
.puts(["5", "saburo", "kondo", "34"])
end

print File.read("test.csv")
# => id,first name,last name,age
# 1,taro,tanaka,20
# 2,jiro,suzuki,18
# 3,ami,sato,19
# 4,yumi,adachi,21
# 5,saburo,kondo,34
//}

//emlist[例 CSV::Row を...
...ruby]{
require "csv"

File.write("test.csv", <<CSV)
id,first name,last name,age
1,taro,tanaka,20
2,jiro,suzuki,18
3,ami,sato,19
4,yumi,adachi,21
CSV

CSV
.open("test.csv", "a") do |csv|
row = CSV::Row.new(["id", "first name", "last name", "age"], ["5", "saburo", "kondo", "34"])
csv
.add_row(row)
en...

CSV#write_headers? -> bool (82.0)

ヘッダを出力先に書き込む場合は真を返します。 そうでない場合は偽を返します。

...st[例][ruby]{
require "csv"

csv
= CSV.new("date1,date2\n2018-07-09,2018-07-10")
csv
.write_headers? # => nil

header = ["header1", "header2"]
row = ["row1_1", "row1_2"]
result = CSV.generate(headers: header, write_headers: false) do |csv|
csv
.write_headers? # => false
csv
<< row
end
result # =>...
..."row1_1,row1_2\n"

result = CSV.generate(headers: header, write_headers: true) do |csv|
csv
.write_headers? # => true
csv
<< row
end
result # => "header1,header2\nrow1_1,row1_2\n"
//}

@see CSV.new...

絞り込み条件を変える

CSV#convert(name) (52.0)

引数 name で指定した変換器かブロックに各フィールドを渡して文字列から別 のオブジェクトへと変換します。

...フィールドを渡して文字列から別
のオブジェクトへと変換します。

引数 name を指定した場合は、組み込みの CSV::Converters を変換器
として利用するために使います。また、独自の変換器を追加することもできま
す。

ブロッ...
... CSV::FieldInfo のインス
タンスを受け取ります。ブロックは変換後の値かフィールドそのものを返さな
ければなりません。

@param name 変換器の名前を指定します。

//emlist[例 name で Converter を指定][ruby]{
require "csv"

csv
= CSV.new("...
...07-09,2018-07-10")
csv
.convert(:date)
csv
.read # => 2018-07-09 ((2458309j,0s,0n),+0s,2299161j)>, #<Date: 2018-07-10 ((2458310j,0s,0n),+0s,2299161j)>
//}

//emlist[例 ブロックを指定][ruby]{
require "csv"

csv
= CSV.new("date1,date2\n2018-07-09,2018-07-10", headers: true)
csv
.convert do |fiel...

CSV#header_convert(name) (52.0)

CSV#convert に似ていますが、ヘッダ行用のメソッドです。

...
CSV
#convert に似ていますが、ヘッダ行用のメソッドです。

このメソッドはヘッダ行を読み込む前に呼び出さなければなりません。

@param name 変換器の名前を指定します。

//emlist[例 name を指定][ruby]{
require "csv"

csv
= CSV.new("heade...
...1,row1_2", headers: true)
csv
.header_convert(:symbol)
csv
.first.headers # => [:header1, :header2]
//}

//emlist[例 ブロックを指定][ruby]{
require "csv"

csv
= CSV.new("header1,header2\nrow1_1,row1_2", headers: true)
csv
.header_convert do |field|
field.to_sym
end
csv
.first.headers # => [:he...
...ader1, :header2]
//}

@see CSV#header_converters, CSV#convert...

CSV::FieldInfo#index -> Integer (46.0)

行内で何番目のフィールドかわかるゼロベースのインデックスを返します。

...クスを返します。

//emlist[例][ruby]{
require 'csv'

csv
= CSV.new("date1,date2\n2018-07-09,2018-07-10", headers: true)
csv
.convert do |field,field_info|
p field_info.index
Date.parse(field)
end
p csv.first

# => 0
# => 1
# => #<CSV::Row "date1":#<Date: 2018-07-09 ((2458309j,0s,0n),+0s,...

CSV::FieldInfo#line -> Integer (46.0)

行番号を返します。

...

//emlist[例][ruby]{
require 'csv'

csv
= CSV.new("date1,date2,date3\n2018-07-09,2018-07-10\n2018-08-09,2018-08-10", headers: true)
csv
.convert do |field,field_info|
p field_info.line
Date.parse(field)
end
p csv.to_a

# => 2
# => 2
# => 3
# => 3
# => [#<CSV::Row "date1":#<Date: 2018-07-09 (...

CSV::Row#push(*args) -> self (46.0)

複数のフィールドを追加するためのショートカットです。

...複数のフィールドを追加するためのショートカットです。

以下とおなじです:
args.each { |arg| csv_row << arg }

@return メソッドチェーンのために自身を返します。...

絞り込み条件を変える

CSV#row_sep -> String (28.0)

行区切り文字列として使用する文字列を返します。

...行区切り文字列として使用する文字列を返します。

//emlist[例][ruby]{
require "csv"

csv
= CSV.new("header1,header2|row1_1,row1_2", row_sep: "|")
csv
.row_sep # => "|"
csv
.read # => [["header1", "header2"], ["row1_1", "row1_2"]]
//}

@see CSV.new...

CSV::Row#to_csv -> String (28.0)

自身を CSV な文字列として返します。ヘッダは使用しません。

...自身を CSV な文字列として返します。ヘッダは使用しません。

//emlist[例][ruby]{
require "csv"

row = CSV::Row.new(["header1", "header2"], [1, 2])
row.to_csv # => "1,2\n"
row.to_csv( {col_sep: "|", row_sep: "<br>"} ) # => "1|2<br>"
//}...

CSV::Row#to_s -> String (28.0)

自身を CSV な文字列として返します。ヘッダは使用しません。

...自身を CSV な文字列として返します。ヘッダは使用しません。

//emlist[例][ruby]{
require "csv"

row = CSV::Row.new(["header1", "header2"], [1, 2])
row.to_csv # => "1,2\n"
row.to_csv( {col_sep: "|", row_sep: "<br>"} ) # => "1|2<br>"
//}...

CSV::Table#push(*rows) -> self (28.0)

複数の行を追加するためのショートカットです。

...//}

@param rows CSV::Row のインスタンスか配列を指定します。

//emlist[例][ruby]{
require 'csv'
csv
= CSV.new("a,b,c\n1,2,3", headers: true)
table = csv.read
rows = [
CSV
::Row.new(table.headers, [4, 5, 6]),
[7, 8, 9]
]

table.push(*rows)
p table[0..2]
# => [#<CSV::Row "a":"1" "...
...b":"2" "c":"3">, #<CSV::Row "a":4 "b":5 "c":6>, #<CSV::Row "a":7 "b":8 "c":9>]
//}

@see CSV::Table#<<...

String#parse_csv(**options) -> [String] (28.0)

CSV.parse_line(self, options) と同様です。

...
CSV
.parse_line(self, options) と同様です。

1 行の CSV 文字列を、文字列の配列に変換するためのショートカットです。

@param options CSV.new と同様のオプションを指定します。

//emlist[][ruby]{
require "csv"

p "Matz,Ruby\n".parse_csv...
...by\r\n".parse_csv(col_sep: '|', row_sep: "\r\n") # => ["Matz", "Ruby"]
//}

Ruby 2.6 (CSV 3.0.2) から、次のオプションが使えるようになりました。

//emlist[][ruby]{
require 'csv'

p "1,,3\n".parse_csv # => ["1", nil, "3"]
p "1,,3\n".parse_csv(nil_value: F...
...loat::NAN) # => ["1", NaN, "3"]
//}


@see CSV.new, CSV.parse_line...

絞り込み条件を変える