Hướng dẫn tạo file csv python

  • Tin tức công nghệ
Làm việc với tệp csv bằng Python

By

Minh Duc

-

05/03/2021

0

729

Trước hết, CSV là gì?
CSV (Giá trị được phân tách bằng dấu phẩy) là một định dạng tệp đơn giản được sử dụng để lưu trữ dữ liệu dạng bảng, chẳng hạn như bảng tính hoặc cơ sở dữ liệu. Tệp CSV lưu trữ dữ liệu dạng bảng (số và văn bản) ở dạng văn bản thuần túy. Mỗi dòng của tệp là một bản ghi dữ liệu. Mỗi bản ghi bao gồm một hoặc nhiều trường, được phân tách bằng dấu phẩy. Việc sử dụng dấu phẩy làm dấu phân tách trường là nguồn gốc của tên cho định dạng tệp này.

Đối với các tệp CSV hoạt động trong python, có một mô-đun có sẵn được gọi là csv . Đọc tệp CSV

                # importing csv module 


                import 
                csv 





                # csv file name 


                filename 
                = 
                "aapl.csv"





                # initializing the titles and rows list 


                fields 
                = 
                [] 


                rows 
                = 
                [] 





                # reading csv file 


                with 
                open
                (filename, 
                'r'
                ) as csvfile: 



                # creating a csv reader object 



                csvreader 
                = 
                csv.reader(csvfile) 






                # extracting field names through first row 



                fields 
                = 
                next
                (csvreader) 






                # extracting each data row one by one 



                for 
                row 
                in 
                csvreader: 



                rows.append(row) 






                # get total number of rows 



                print
                (
                "Total no. of rows: %d"
                %
                (csvreader.line_num)) 





                # printing the field names 


                print
                (
                'Field names are:' 
                + 
                ', '
                .join(field 
                for 
                field 
                in 
                fields)) 





                # printing first 5 rows 


                print
                (
                '\nFirst 5 rows are:\n'
                ) 


                for 
                row 
                in 
                rows[:
                5
                ]: 



                # parsing each column of a row 



                for 
                col 
                in 
                row: 



                print
                (
                "%10s"
                %
                col), 



                print
                (
                '\n'
                ) 

Kết quả của chương trình trên trông giống như sau:

Hướng dẫn tạo file csv python

Hãy để chúng tôi cố gắng hiểu đoạn mã này.

  • với mở (tên tệp, ‘r’) dưới dạng csvfile: csvreader = csv.reader (csvfile) Ở đây, trước tiên chúng ta mở tệp CSV ở chế độ ĐỌC. Đối tượng tệp được đặt tên là csvfile . Đối tượng tệp được chuyển đổi thành đối tượng csv.reader. Chúng tôi lưu đối tượng csv.reader dưới dạng csvreader .
  • fields = csvreader.next () csvreader là một đối tượng có thể lặp lại. Do đó, phương thức .next () trả về hàng hiện tại và chuyển trình vòng lặp đến hàng tiếp theo. Vì hàng đầu tiên của tệp csv của chúng tôi chứa tiêu đề (hoặc tên trường), chúng tôi lưu chúng trong một danh sách được gọi là trường .
  • cho hàng trong csvreader: row.append (hàng) Bây giờ, chúng ta lặp qua các hàng còn lại bằng vòng lặp for. Mỗi hàng được nối vào một danh sách được gọi là hàng . Nếu bạn cố gắng in từng hàng, người ta có thể thấy hàng đó không là gì ngoài một danh sách chứa tất cả các giá trị trường.
  • print (“Tổng số hàng:% d”% (csvreader.line_num)) csvreader.line_num không là gì ngoài một bộ đếm trả về số hàng đã được lặp lại.

Ghi vào tệp CSV

                # importing the csv module 


                import 
                csv 





                # field names 


                fields 
                = 
                [
                'Name'
                , 
                'Branch'
                , 
                'Year'
                , 
                'CGPA'
                ] 





                # data rows of csv file 


                rows 
                = 
                [ [
                'Nikhil'
                , 
                'COE'
                , 
                '2'
                , 
                '9.0'
                ], 



                [
                'Sanchit'
                , 
                'COE'
                , 
                '2'
                , 
                '9.1'
                ], 



                [
                'Aditya'
                , 
                'IT'
                , 
                '2'
                , 
                '9.3'
                ], 



                [
                'Sagar'
                , 
                'SE'
                , 
                '1'
                , 
                '9.5'
                ], 



                [
                'Prateek'
                , 
                'MCE'
                , 
                '3'
                , 
                '7.8'
                ], 



                [
                'Sahil'
                , 
                'EP'
                , 
                '2'
                , 
                '9.1'
                ]] 





                # name of csv file 


                filename 
                = 
                "university_records.csv"





                # writing to csv file 


                with 
                open
                (filename, 
                'w'
                ) as csvfile: 



                # creating a csv writer object 



                csvwriter 
                = 
                csv.writer(csvfile) 






                # writing the fields 



                csvwriter.writerow(fields) 






                # writing the data rows 



                csvwriter.writerows(rows)

Hãy để chúng tôi cố gắng hiểu đoạn mã trên.

  • trường và hàng đã được xác định. các trường là một danh sách chứa tất cả các tên trường. hàng là một danh sách các danh sách. Mỗi hàng là một danh sách chứa các giá trị trường của hàng đó.
  • với mở (tên tệp, ‘w’) dưới dạng csvfile: csvwriter = csv.writer (csvfile) Ở đây, trước tiên chúng ta mở tệp CSV ở chế độ WRITE. Đối tượng tệp được đặt tên là csvfile . Đối tượng tệp được chuyển đổi thành đối tượng csv.writer. Chúng tôi lưu đối tượng csv.writer dưới dạng csvwriter .
  • csvwriter.writerow (các trường) Bây giờ chúng ta sử dụng phương thức writerow để viết hàng đầu tiên không có gì khác ngoài các tên trường.
  • csvwriter.writerows (hàng) Chúng tôi sử dụng phương thức writerows để viết nhiều hàng cùng một lúc.

Ghi từ điển vào tệp CSV

                # importing the csv module 


                import 
                csv 





                # my data rows as dictionary objects 


                mydict 
                =
                [{
                'branch'
                : 
                'COE'
                , 
                'cgpa'
                : 
                '9.0'
                , 
                'name'
                : 
                'Nikhil'
                , 
                'year'
                : 
                '2'
                }, 



                {
                'branch'
                : 
                'COE'
                , 
                'cgpa'
                : 
                '9.1'
                , 
                'name'
                : 
                'Sanchit'
                , 
                'year'
                : 
                '2'
                }, 



                {
                'branch'
                : 
                'IT'
                , 
                'cgpa'
                : 
                '9.3'
                , 
                'name'
                : 
                'Aditya'
                , 
                'year'
                : 
                '2'
                }, 



                {
                'branch'
                : 
                'SE'
                , 
                'cgpa'
                : 
                '9.5'
                , 
                'name'
                : 
                'Sagar'
                , 
                'year'
                : 
                '1'
                }, 



                {
                'branch'
                : 
                'MCE'
                , 
                'cgpa'
                : 
                '7.8'
                , 
                'name'
                : 
                'Prateek'
                , 
                'year'
                : 
                '3'
                }, 



                {
                'branch'
                : 
                'EP'
                , 
                'cgpa'
                : 
                '9.1'
                , 
                'name'
                : 
                'Sahil'
                , 
                'year'
                : 
                '2'
                }] 





                # field names 


                fields 
                = 
                [
                'name'
                , 
                'branch'
                , 
                'year'
                , 
                'cgpa'
                ] 





                # name of csv file 


                filename 
                = 
                "university_records.csv"





                # writing to csv file 


                with 
                open
                (filename, 
                'w'
                ) as csvfile: 



                # creating a csv dict writer object 



                writer 
                = 
                csv.DictWriter(csvfile, fieldnames 
                = 
                fields) 






                # writing headers (field names) 



                writer.writeheader() 






                # writing data rows 



                writer.writerows(mydict) 

Trong ví dụ này, chúng tôi viết một mydict từ điển vào một tệp CSV.

  • với mở (tên tệp, ‘w’) dưới dạng csvfile: nhà văn = csv.DictWriter (csvfile, fieldnames = các trường) Ở đây, đối tượng tệp ( csvfile ) được chuyển đổi thành đối tượng DictWriter.
    Ở đây, chúng tôi chỉ định các tên trường như một đối số.
  • nhà văn.writeheader () Phương thức writeheader chỉ cần ghi hàng đầu tiên của tệp csv của bạn bằng cách sử dụng các tên trường được chỉ định trước.
  • writer.writerows (mydict) Phương thức writerows chỉ viết tất cả các hàng nhưng trong mỗi hàng, nó chỉ ghi các giá trị (không phải khóa).

Vì vậy, cuối cùng, tệp CSV của chúng tôi trông giống như sau:

Hướng dẫn tạo file csv python

Điểm quan trọng:

  • Trong mô-đun csv, một tham số phương ngữ tùy chọn có thể được sử dụng để xác định một tập hợp các tham số cụ thể cho một định dạng CSV cụ thể . Theo mặc định, mô-đun csv sử dụng phương ngữ excel giúp chúng tương thích với bảng tính excel. Bạn có thể xác định phương ngữ của riêng mình bằng cách sử dụng phương thức register_dialect . Đây là một ví dụ:

     csv.register_dialect(
    'mydialect',
    delimiter = ',',
    quotechar = '"',
    doublequote = True,
    skipinitialspace = True,
    lineterminator = '\r\n',
    quoting = csv.QUOTE_MINIMAL)

Bây giờ, trong khi xác định đối tượng csv.reader hoặc csv.writer, chúng ta có thể chỉ định phương ngữ như
sau:

csvreader = csv.reader(csvfile, dialect='mydialect')

Khóa học PYTHON (IPD2020) cho người mới bắt đầu

Facebook

Twitter

Pinterest

WhatsApp

Previous articleTop 10 ngôn ngữ lập trình hàng đầu năm 2021

Next articlePhân tích cú pháp XML bằng Python

Minh Duc

https://laptrinhvien.net/