W2653 CSV File Processing
From Coder Merlin
Revision as of 07:28, 27 April 2023 by Chukwuemeka-tinashe (talk | contribs)
Within these castle walls be forged Mavens of Computer Science ...
— Merlin, The Coder
Introduction[edit]
This tutorial will provide an introduction about processing CSV files.
Research[edit]
- Read CSV Files (Creativyst)
- Read ICAO Airport Codes (Wikipedia)
- Read Aviation Weather Center Mission (US Government)
- Read Metar Overview (Wikipedia)
- Read Initialization (Swift Documentation) - Read only the section on convenience initializers
Experiment[edit]
Create a new directory in your ~/Experiences folder, named "W2653". Then, download this file Example-metars.csv to that directory.
cd ~/Experiences
mkdir W2563
cd W2563
wget https://codermerlin.academy/wiki/images/1/15/Example-metars.csv
View the file in emacs:
emacs Example-metars.csv
Carefully observe the file. Remember that the "\" character as the last character in a line in emacs is a line-continuation character. (For reference, you may read Continuation-Lines.) You'll probably find it much easier to read most lines if you maximize the width of your window.
Questions:
- On which line does the actual data begin?
- How could you programmatically make this determination?
- What is the purpose of the immediately preceding line?
- How are records delimited?
- How are fields delimited?
Create a new file in the current directory, "main.swift". Add additional files as necessary for each class.
Exercises[edit]
- Design a class that will contain each field in a metar as a separate property. Pay close attention to the type of each field.
- Create an initializer that accepts a series of fields of the expected type
- Create a convenience initializer that accepts a series of strings, one for each field
- Create a convenience initializer that accepts a single string, in a format identical to that in the sample file
- Support the CustomStringConvertible protocol, providing a reasonable description of the data encapsulated in the class.
Hints:
- In some cases you may opt to use more than one property for a single field in the file or vice versa.
- Think carefully about whether or not a property should be optional.
- This code snippet may be helpful Code_Snippet:_Splitting_Key-Value_Pairs_into_Components