Use Python to operate Csv files,
Csv is the abbreviation of Comma-Separated Values. It is the table data stored in the form of text files, such as the following table:
It can be stored as a csv file with the following content:
No.,Name,Age,Score1,mayi,18,992,jack,21,893,tom,25,954,rain,19,80
Assume that the preceding csv file is saved as "test.csv"
1. Read files
How to Use Python to extract a column, that is, a field, like an Excel operation. Using the csv module provided by Python, there are two methods to achieve this:
The first method is to use the reader function to receive an iteratable object (such as a csv file), return a generator, and parse the csv content from it: for example, the following code can read all the contents of csv, in the unit of Behavior:
#! /Usr/bin/python3 #-*-conding: UTF-8-*-_ author _ = 'mayi' import csv # Read with open ("test.csv", "r ", encoding = "UTF-8") as f: reader = csv. reader (f) rows = [row for row in reader] print (rows)
Get:
[['No.', 'Name', 'Age', 'Score'], ['1', 'mayi', '18', '99'], ['2', 'jack', '21', '89'], ['3', 'tom', '25', '95'], ['4', 'rain', '19', '80']]
To extract a column, use the following code:
#! /Usr/bin/python3 #-*-conding: UTF-8-*-_ author _ = 'mayi' import csv # Read the content of the second column with open ("test.csv ", "r", encoding = "UTF-8") as f: reader = csv. reader (f) column = [row [1] for row in reader] print (column)
Get:
['Name', 'mayi', 'jack', 'tom', 'rain']
Note that the str type is read from csv. This method requires you to know the sequence number of the column in advance, for example, the Name is in the 2nd column, but cannot be queried Based on the 'name' title. In this case, the second method can be used:
The second method is to use DictReader, which is similar to the reader function. It receives an iteratable object and can return a generator, but every returned cell is placed in a dictionary value, the dictionary key is the title of the Cell (that is, the column header ). The following code shows the structure of the DictReader:
#-*-Conding: UTF-8-*-_ author _ = 'mayi' import csv # Read with open ("test.csv", "r", encoding = "UTF-8 ") as f: reader = csv. dictReader (f) column = [row for row in reader] print (column)
Get:
[{'No.': '1', 'Age': '18', 'Score': '99', 'Name': 'mayi'}, {'No.': '2', 'Age': '21', 'Score': '89', 'Name': 'jack'}, {'No.': '3', 'Age': '25', 'Score': '95', 'Name': 'tom'}, {'No.': '4', 'Age': '19', 'Score': '80', 'Name': 'rain'}]
If you want to use DictReader to read a csv column, you can use the column title to query:
#! /Usr/bin/python3 #-*-conding: UTF-8-*-_ author _ = 'mayi' import csv # Read the content of the Name column with open ("test.csv ", "r", encoding = "UTF-8") as f: reader = csv. dictReader (f) column = [row ['name'] for row in reader] print (column)
Get:
['mayi', 'jack', 'tom', 'rain']
2. Write files
When reading a file, we read the csv file into the list. When writing a file, we write the elements in the List into the csv file.
#! /Usr/bin/python3 #-*-conding: UTF-8-*-_ author _ = 'mayi' import csv # Write: append row = ['5 ', 'hanmeimei', '23', '81 '] out = open ("test.csv", "a", newline = "") csv_writer = csv. writer (out, dialect = "excel") csv_writer.writerow (row)
Get: