JSON (JavaScript Object Notation) and CSV (Comma-Separated Values) are two popular data formats used for storing, exchanging, and manipulating data. They each serve unique purposes: JSON being ideal for complex data structures and interaction with APIs, while CSV is often used for tabular data, easily read by spreadsheet software like Microsoft Excel or Google Sheets.
The json
Module: Python’s built-in library json
is used for encoding and decoding JSON data.
Reading JSON:
To parse JSON from a string, use json.loads()
:
import json
data = '{"name": "John", "age": 30, "city": "New York"}'
parsed_data = json.loads(data)
print(parsed_data["city"]) # Outputs: New York
To parse JSON from a file, use json.load()
:
with open('data.json', 'r') as file:
data = json.load(file)
Writing JSON:
To write JSON to a string, use json.dumps()
:
data = {
"name": "John",
"age": 30,
"city": "New York"
}
json_str = json.dumps(data)
To write JSON to a file, use json.dump()
:
with open('output.json', 'w') as file:
json.dump(data, file)
The csv
Module: The built-in csv
module in Python is used to read from and write to CSV files.
Reading CSV:
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
Here, each row
is a list containing the data for each column.
Writing to CSV:
data = [["Name", "Age"], ["John", 30], ["Doe", 25]]
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
The writer.writerows()
method writes multiple rows at once, while writer.writerow()
writes a single row.
Working with DictReader and DictWriter:
These are special classes in the csv
module that allow you to work with CSV data as dictionaries.
Reading with DictReader
:
with open('data.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['Name'], row['Age'])
Writing with DictWriter
:
fieldnames = ['Name', 'Age']
data = [{"Name": "John", "Age": 30}, {"Name": "Doe", "Age": 25}]
with open('output.csv', 'w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for entry in data:
writer.writerow(entry)
Working with JSON and CSV in Python is made simple with the respective json
and csv
modules. JSON is versatile for nested and complex data structures, making it a go-to for web-based applications and APIs. Meanwhile, CSV’s simplicity and widespread adoption make it a popular choice for data analysts and those dealing with tabular data formats. Properly understanding how to efficiently read and write these formats in Python opens doors to a wide range of data processing, analysis, and exchange opportunities.