Mastering CSV Files in Python: A Comprehensive Guide
Getting Started with CSV Files
When working with CSV files in Python, we’ll be using the built-in csv
module. If you’re new to using this module, be sure to check out our tutorial on Python CSV basics.
Reading CSV Files with csv.reader()
Let’s dive into the basics of using csv.reader()
to read CSV files. Suppose we have a CSV file called innovators.csv
with the following entries:
We can read the contents of the file using the following program:
with open('innovators.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
CSV Files with Custom Delimiters
By default, CSV files use commas as delimiters. However, some CSV files may use alternative delimiters like |
or \t
. To read these files, we can pass an additional delimiter
parameter to the csv.reader()
function. For example:
with open('innovators.csv', 'r') as file:
reader = csv.reader(file, delimiter='\t')
for row in reader:
print(row)
Handling Initial Spaces in CSV Files
Some CSV files may have spaces after delimiters. To remove these initial spaces, we can pass the skipinitialspace
parameter to the csv.reader()
function. Here’s an example:
with open('people.csv', 'r') as file:
reader = csv.reader(file, skipinitialspace=True)
for row in reader:
print(row)
Working with Quoted Entries in CSV Files
CSV files may also contain quoted entries. To handle these, we can use the quoting
parameter with the csv.reader()
function. For example:
with open('quotes.csv', 'r') as file:
reader = csv.reader(file, quoting=csv.QUOTE_ALL)
for row in reader:
print(row)
Using Dialects in the CSV Module
When working with multiple CSV files, it can become cumbersome to specify formatting patterns individually. That’s where dialects come in. Dialects allow us to group formatting patterns together and reuse them across multiple files. Here’s an example:
“`
csv.registerdialect(‘myDialect’, delimiter=’|’, quoting=csv.QUOTEALL, skipinitialspace=True)
with open(‘office.csv’, ‘r’) as file:
reader = csv.reader(file, dialect=’myDialect’)
for row in reader:
print(row)
“`
Reading CSV Files with csv.DictReader()
The csv.DictReader()
class allows us to read CSV files as dictionaries. Here’s an example:
with open('people.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(dict(row))
Using the csv.Sniffer Class
The csv.Sniffer
class is used to deduce the format of a CSV file. It offers two methods: sniff()
and has_header()
. Here’s an example:
“`
with open(‘office.csv’, ‘r’) as file:
sample = file.read(64)
sniffer = csv.Sniffer()
hasheader = sniffer.hasheader(sample)
print(has_header)
deduced_dialect = sniffer.sniff(sample)
with open('office.csv', 'r') as file:
reader = csv.reader(file, dialect=deduced_dialect)
for row in reader:
print(row)
“`
By mastering these concepts, you’ll be well-equipped to handle a wide range of CSV files in Python. Happy coding!