On this article, we’ll learn to use Python to learn from and write information to CSV recordsdata, and easy methods to convert CSV recordsdata to JSON format and vice versa. We’ll discover easy methods to use the csv module and likewise take a look at examples that assist perceive the way it works.
A CSV (comma-separated values) file is a textual content file format that enables information to be saved in a tabular construction. It is a well-liked format used for exporting and importing information from databases and spreadsheets.
Because the title suggests, each bit of information in a CSV file is separated by a comma (,
). Typically the time period “CSV” can be utilized to explain codecs with different sorts of separators, reminiscent of colons (:
), semicolons (;
) and tabs (t
). For the needs of this text, we’ll simply be coping with CSV recordsdata that use commas as delimiters (often called RFC 4180).
When opened, the content material of a CSV file seems like this:
Worker Id,First Identify,Gender,Begin Date,Final Login Time,Wage,Bonus %,Senior Administration,Group
1,Douglas,Male,8/6/1993,12:42 PM,,6.945,TRUE,Advertising and marketing
2,Thomas,Male,3/31/1996,6:53 AM,61933,4.17,,
3,Maria,Feminine,4/23/1993,11:17 AM,,11.858,FALSE,Finance
4,Jerry,Male,3/4/2005,1:00 PM,138705,9.34,,Finance
As seen above, the comma delimiter, ,
, is used to separate every particular piece of information within the file.
The primary row of information might optionally function the header, figuring out every column of information beneath it. CSV recordsdata are generally saved with a .csv
file extension.
The csv Module
Since spreadsheets and databases like MS SQL will be imported and exported as CSV recordsdata, it’s essential to know easy methods to deal with information served in CSV format programmatically. Most programming languages like Python assist dealing with recordsdata in CSV and likewise remodeling them to different codecs like JSON.
Python offers the csv module for studying, writing and performing different types of file handling in CSV codecs. The in-built library offers features and lessons that make working with CSV recordsdata seamless.
The way to Learn CSV Information Utilizing Python
The csv module has the csv.reader()
operate for studying CSV recordsdata. It’s used along with objects (together with file objects) reminiscent of these produced with Python’s in-built open()
operate.
Given a file object from a name to open()
, csv.reader()
will return a reader object. The reader object can be utilized to iterate over every line of CSV information, the place rows are returned as an inventory of strings.
Let’s take an instance:
import csv
with open('workers.csv', newline='') as file_obj:
reader_obj = csv.reader(file_obj)
for row in reader_obj:
print(row)
Right here’s the output of the code above:
['Employee Id', 'First Name', 'Gender', 'Start Date', 'Last Login Time', 'Salary', 'Bonus %', 'Senior Management', 'Team']
['1', 'Douglas', 'Male', '8/6/1993', '12:42 PM', '', '6.945', 'TRUE', 'Marketing']
['2', 'Thomas', 'Male', '3/31/1996', '6:53 AM', '61933', '4.17', '', '']
['3', 'Maria', 'Female', '4/23/1993', '11:17 AM', '', '11.858', 'FALSE', 'Finance']
['4', 'Jerry', 'Male', '3/4/2005', '1:00 PM', '138705', '9.34', '', 'Finance']
['5', 'Larry', 'Male', '1/24/1998', '4:47 PM', '101004', '1.389', 'TRUE', 'Client Services']
...
From the primary code snippet, the workers.csv
file is opened, after which the csv.reader()
operate parses it and returns a reader object. A easy for loop is used to iterate over the reader object, which returns an inventory of information from the every row from the workers.csv
file, ranging from the highest.
The way to Write to CSV Information Utilizing Python
Apart from studying information from CSV recordsdata, we will additionally write information to those recordsdata in Python. The csv.author()
operate permits us to jot down information to CSV format. After opening the file in write mode, the csv.author()
operate returns a author object, which converts equipped information into delimited strings on the offered file object. The author object has the writerow()
methodology for writing a row — an iterable of strings or numbers of comma-separated values per time — whereas the writerows()
methodology is used for a number of rows without delay. The writerow()
and writerows()
strategies are they solely two choices for writing information to a CSV file.
All of the listing objects used within the code snippet above might be grouped right into a 2D listing and handed in as an argument to the writerows()
methodology of the author object to attain the identical outcome.
After the with
assertion is executed, a CSV file (merchandise.csv
) is created within the present working listing containing these comma-separated values.
Right here’s an instance:
import csv
with open('merchandise.csv', 'w', newline='') as file_obj:
writer_obj = csv.author(file_obj)
writer_obj.writerow(['Product Name', 'Price', 'Quantity', 'SKU Number' ])
writer_obj.writerow(['Rice', 80, 35, 'RI59023'])
writer_obj.writerow(['Curry', 2, 200, 'CY13890'])
writer_obj.writerow(['Milk', 9.5, 315, 'MK10204'])
Right here’s the output of the code above:
Product Identify,Worth,Amount,SKU Quantity
Rice,80,35,RI59023
Curry,2,200,CY13890
Milk,9.5,315,MK10204
The way to Convert CSV to JSON Utilizing Python
Whereas performing file I/O operations, we’d wish to convert a CSV file to JSON format — which is well-liked for receiving and transmitting information between a shopper and a server. The csv module offers the csv.DictReader
class to assist us to attain this.
The csv.DictReader
class strategies assist to transform a given CSV file to a Python dictionary earlier than making use of the json module’s json.dump()
operate to transform the ensuing Python dictionary to a JSON file. The csv.DictReader()
class takes an elective fieldnames
argument. The place the sector names are omitted, values from the primary row will probably be mapped to the remainder of the information as subject names.
Let’s check out an instance:
import csv
import json
my_dict = {}
with open('workers.csv', newline='') as file_obj:
reader_object = csv.DictReader(file_obj)
for row in reader_object:
key = row['Employee Id']
my_dict[key] = row
with open('worker.json', 'w', encoding='utf-8') as file_obj:
json.dump(my_dict, file_obj, indent=4)
Right here’s the output of the code above:
"1": {
"Worker Id": "1",
"First Identify": "Douglas",
"Gender": "Male",
"Begin Date": "8/6/1993",
"Final Login Time": "12:42 PM",
"Wage": "",
"Bonus %": "6.945",
"Senior Administration": "TRUE",
"Group": "Advertising and marketing"
},
"2": {
"Worker Id": "2",
"First Identify": "Thomas",
"Gender": "Male",
"Begin Date": "3/31/1996",
"Final Login Time": "6:53 AM",
"Wage": "61933",
"Bonus %": "4.17",
"Senior Administration": "",
"Group": ""
},
...
To transform a CSV file to a JSON equal, we utilized the next steps:
- opened the
workers.csv
file in learn mode - created a Python dictionary from the returned file object utilizing the
csv.DictReader
class - opened a JSON file in write mode, reminiscent of
workers.json
(if no such file had existed, one would have been created) - used the
dump()
operate of the json module to transform the Python dictionary (my_dict
) to a JSON file
The way to Convert JSON to CSV Utilizing Python
On this part, we’ll take a look at easy methods to convert information from a JSON file to CSV format. To realize this, we’ll use each the in-built csv and json Python modules. The json module’s json.load()
operate will assist convert a JSON file to a Python dictionary, whereas the csv module’s csv.DictWiter
class strategies will assist convert the Python dictionary to a CSV file.
Right here’s an instance:
import csv
import json
py_dict = {}
with open('workers.json', 'r', encoding='utf-8') as file_obj:
py_dict = json.load(file_obj)
with open('employees_records.csv', 'w', newline='') as file_obj:
csv_writer = csv.DictWriter(file_obj, fieldnames=py_dict['1'].keys())
csv_writer.writeheader()
for key in py_dict.keys():
csv_writer.writerow(py_dict[key])
To transform a JSON file to a CSV equal, we utilized the next steps:
- opened the
workers.json
file in learn mode - used the
json.load()
operate to create a Python dictionarypy_dict
- opened a CSV file
employees_records.csv
in write mode (if no such file had existed, one would have been created) - created a author object with the
csv.DictWriter
class with obligatory arguments - used the author object strategies to map dictionaries into the suitable variety of rows
Conclusion
CSV recordsdata are very fashionable and sometimes utilized in exporting and importing spreadsheets and databases. This file format is used fairly often by these working with information. Nonetheless, whereas programming with Python there is perhaps must rapidly use CSV recordsdata, so it’s essential to learn to carry out file I/O operations with CSV.
Python’s csv module could be very useful for working with CSV recordsdata, because it offers the required features and lessons for these type of duties.
It’s essential to additionally observe that we might must convert recordsdata from one format to a different (CSV to JSON) as seen in our examples above.