Bird
Raised Fist0
Rubyprogramming~10 mins

CSV library basics in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to require the CSV library.

Ruby
require '[1]'
Drag options to blanks, or click blank then click option'
Anet/http
Bcsv
Cjson
Ddate
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'CSV' with uppercase letters.
Forgetting to require the library before using it.
2fill in blank
medium

Complete the code to read a CSV file named 'data.csv' and print each row.

Ruby
CSV.foreach('data.csv') do |[1]|
  puts [1].inspect
end
Drag options to blanks, or click blank then click option'
Aline
Bcsv
Cfile
Drow
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'file' which is the whole file, not a row.
Using 'csv' which is the library name, not the row variable.
3fill in blank
hard

Fix the error in the code to parse CSV data from a string.

Ruby
data = "name,age\nAlice,30\nBob,25"
rows = CSV.[1](data)
rows.each { |row| puts row[0] }
Drag options to blanks, or click blank then click option'
Aparse
Bread
Copen
Dforeach
Attempts:
3 left
💡 Hint
Common Mistakes
Using CSV.foreach which expects a filename.
Using CSV.read which also expects a file.
4fill in blank
hard

Fill both blanks to create a hash from CSV rows with headers.

Ruby
CSV.foreach('data.csv', headers: true) do |[1]|
  person = [2].to_h
  puts person
end
Drag options to blanks, or click blank then click option'
Arow
Bline
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names in the block and inside the block.
Forgetting to convert the row to a hash.
5fill in blank
hard

Fill all three blanks to write CSV data with headers.

Ruby
CSV.open('output.csv', 'w', write_headers: true, headers: [[1]]) do |csv|
  csv.[2]([[3]])
end
Drag options to blanks, or click blank then click option'
A"name", "age"
Bputs
C"Alice", 30
D <<
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'puts' instead of '<<' to add rows.
Not providing headers as strings.
Not passing row data as an array.

Practice

(1/5)
1. What does the Ruby CSV method CSV.foreach do?
easy
A. Reads a CSV file line by line, yielding each row as an array.
B. Writes data to a CSV file line by line.
C. Converts a CSV file into a hash with headers as keys.
D. Deletes a CSV file from the system.

Solution

  1. Step 1: Understand CSV.foreach purpose

    The method CSV.foreach is designed to read CSV files line by line.
  2. Step 2: Identify the output format

    Each line is yielded as an array of strings representing the cells in that row.
  3. Final Answer:

    Reads a CSV file line by line, yielding each row as an array. -> Option A
  4. Quick Check:

    CSV.foreach reads lines as arrays [OK]
Hint: Remember: foreach reads rows, open writes rows [OK]
Common Mistakes:
  • Confusing reading with writing methods
  • Thinking it returns a hash instead of an array
  • Assuming it deletes files
2. Which of the following is the correct syntax to open a CSV file for writing in Ruby?
easy
A. CSV.read('file.csv', 'w')
B. CSV.open('file.csv', 'r') do |csv| ... end
C. CSV.foreach('file.csv') do |csv| ... end
D. CSV.open('file.csv', 'w') do |csv| ... end

Solution

  1. Step 1: Identify mode for writing

    To write to a CSV file, the mode should be 'w' (write mode).
  2. Step 2: Match syntax with CSV.open

    The correct syntax is CSV.open('file.csv', 'w') do |csv| ... end to open for writing.
  3. Final Answer:

    CSV.open('file.csv', 'w') do |csv| ... end -> Option D
  4. Quick Check:

    Open with 'w' writes CSV [OK]
Hint: Use 'w' mode with CSV.open to write files [OK]
Common Mistakes:
  • Using 'r' mode which is for reading
  • Using CSV.foreach for writing
  • Using CSV.read with mode argument
3. What will be the output of this Ruby code?
require 'csv'
CSV.foreach('data.csv') do |row|
  puts row.inspect
end

Assuming data.csv contains:
name,age
Alice,30
Bob,25
medium
A. Error: CSV.foreach requires a block
B. ["name", "age"]\n["Alice", "30"]\n["Bob", "25"]
C. ["name,age"]\n["Alice,30"]\n["Bob,30"]
D. name,age\nAlice,30\nBob,25

Solution

  1. Step 1: Understand CSV.foreach behavior

    It reads each line and yields an array of strings split by commas.
  2. Step 2: Analyze puts row.inspect output

    Using puts row.inspect prints the array representation of each row.
  3. Final Answer:

    ["name", "age"]\n["Alice", "30"]\n["Bob", "25"] -> Option B
  4. Quick Check:

    CSV.foreach yields arrays, inspect shows arrays [OK]
Hint: CSV.foreach yields arrays; inspect shows array format [OK]
Common Mistakes:
  • Expecting raw CSV string output
  • Confusing puts with print
  • Missing block for CSV.foreach
4. Identify the error in this Ruby code snippet:
require 'csv'
CSV.open('output.csv', 'w') do |csv|
  csv << 'name,age'
  csv << ['Alice', 30]
end
medium
A. The first csv << should be an array, not a string.
B. Missing require statement for CSV library.
C. The file mode 'w' is invalid for CSV.open.
D. csv << cannot accept arrays.

Solution

  1. Step 1: Check CSV.open usage for writing rows

    CSV expects each row as an array of fields, not a single string.
  2. Step 2: Identify the incorrect row format

    The line csv << 'name,age' should be csv << ['name', 'age'] to write two columns.
  3. Final Answer:

    The first csv << should be an array, not a string. -> Option A
  4. Quick Check:

    CSV rows must be arrays [OK]
Hint: Write rows as arrays, not comma strings [OK]
Common Mistakes:
  • Passing a string instead of array for a row
  • Forgetting to require 'csv'
  • Using wrong file mode
5. You want to read a CSV file and create a hash where the first column is the key and the second column is the value. Which Ruby code correctly does this using the CSV library?
hard
A. hash = CSV.read('file.csv').to_h
B. hash = CSV.open('file.csv', 'w') { |csv| csv.to_h }
C. hash = {} CSV.foreach('file.csv') do |row| hash[row[0]] = row[1] end
D. hash = CSV.foreach('file.csv') { |row| row.to_h }

Solution

  1. Step 1: Understand CSV.foreach usage for reading

    CSV.foreach reads each row as an array, allowing manual hash construction.
  2. Step 2: Build hash from first and second columns

    Assigning hash[row[0]] = row[1] correctly maps keys to values.
  3. Final Answer:

    hash = {} CSV.foreach('file.csv') do |row| hash[row[0]] = row[1] end -> Option C
  4. Quick Check:

    foreach + manual hash build = correct [OK]
Hint: Use foreach and assign hash keys manually [OK]
Common Mistakes:
  • Using CSV.read.to_h which doesn't convert arrays to hash
  • Using CSV.open with 'w' mode for reading
  • Expecting row.to_h to work directly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard