Reading CSV files is a common task you have to perform in Python. Let's take a look at how we can read CSV files.
Let's start with reading a CSV file with basic python. We can do this
using the with
and open
keyword and then loop through the contents.
For example, let's say we have a CSV file that looks like this, called example.csv
.
a,b,c
1,2,3
4,5,6
filename = 'example.csv'
with open(filename, 'r') as csvfile:
for row in csvFile:
print(row)
Here we use the with
, open
, and as
keyword to open a file. This tells Python
to read the file located at our filename
variable. We use these keywords so Python
handles closing the file when we are done. Notice that when using open
we added r
which means to open the file for reading. There are other options we will look at
in the future.
Once, the file is open, we can loop through our new variable, csvfile
and this gives
us the lines in the file. However, this will not parse the file, so in our example
when we print row, we will see the full line, i.e. 1,2,3
. We can parse that with
the split
function.
filename = 'example.csv'
with open(filename, 'r') as csvfile:
for row in csvFile:
parsedRow = row.split(",")
print(parsedRow) # [1, 2, 3]
There we go! Now we have a list of the items in our rows stored in the variable parseRow
.
Okay, the above works well, but sometimes CSVs have weird characters. Also, remembering
to split our rows adds some extra logic that we don't want to repeat every time we read
a CSV file. For this, we can use the csv
standard library.
import csv
filename = 'example.csv'
with open(filename, 'r') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row) # [1, 2, 3]
Here, we added import csv
to the top to pull in the csv library. Then
we added reader = csv.reader(csvfile)
which will automatically parse
our CSV file and turn our lines into lists (like we did by using split).
That's all for this lesson! There are many more options for handling CSV files that we can explore in the future. If you want to learn more, check out the Python official docs here: https://docs.python.org/3/library/csv.html.