Làm cách nào để sử dụng trình soạn thảo CSV Python?

Định dạng CSV là định dạng nhập và xuất được sử dụng phổ biến nhất cho cơ sở dữ liệu và bảng tính. Hướng dẫn này sẽ giới thiệu về mô-đun csv trong Python. Bạn sẽ tìm hiểu về tất cả các chức năng và lớp mà nó cung cấp để bạn đọc và ghi dữ liệu vào tệp CSV. Tôi cũng đã bao gồm một số ví dụ hoạt động để chỉ cho bạn cách đọc và ghi dữ liệu vào tệp CSV thực tế bằng Python

Tệp CSV là gì?

Thuật ngữ CSV là viết tắt của Giá trị được phân tách bằng dấu phẩy. Tệp định dạng CSV cho phép dữ liệu được lưu trong cấu trúc dạng bảng với. phần mở rộng csv. Các tệp CSV đã được sử dụng rộng rãi trong các ứng dụng thương mại điện tử vì chúng được coi là rất dễ xử lý. Một số lĩnh vực mà chúng đã được sử dụng bao gồm

  • nhập và xuất dữ liệu khách hàng
  • nhập khẩu và xuất khẩu sản phẩm
  • đơn hàng xuất khẩu
  • xuất báo cáo phân tích thương mại điện tử

Chức năng đọc và viết

Mô-đun csv có sẵn một số chức năng và lớp để làm việc với các tệp CSV. Hãy bắt đầu bằng cách học cách sử dụng các hàm

import csv
85 và
import csv
86

import csv
87

Hàm này trả về một đối tượng trình đọc lặp lại trên tất cả các dòng trong tệp CSV đã cho. Hàm

import csv
88 nhận các tham số sau

  • import csv
    
    89. Tham số đầu tiên có thể là bất kỳ đối tượng nào hỗ trợ giao thức iterator và trả về một chuỗi mỗi khi phương thức
    import csv
    
    90 của nó được gọi
  • import csv
    
    91. Một tham số tùy chọn được sử dụng để xác định một tập hợp các tham số dành riêng cho một phương ngữ CSV cụ thể. Nó được đặt thành excel theo mặc định. Bạn có thể lấy tên của tất cả các phương ngữ đã đăng ký bằng cách gọi hàm
    import csv
    
    92
  • import csv
    
    93. Tham số thứ ba cho biết bạn có thể tùy ý chuyển nhiều đối số từ khóa. Chúng rất hữu ích để ghi đè các tham số định dạng riêng lẻ trong phương ngữ hiện tại

Đây là một ví dụ rất đơn giản cho thấy cách sử dụng hàm

import csv
88

1
import csv
2
3
with open['people.csv', newline=''] as File:  
4
    reader = csv.reader[File]
5
    for row in reader:
6
import csv
0

Bạn có nhận thấy

import csv
95 được chuyển đến
import csv
96 trong khi mở ví dụ không. csv?

import csv
98

Hàm này trả về một đối tượng ghi có nhiều phương thức trợ giúp để giúp bạn ghi dữ liệu của mình vào tệp CSV. Hàm này tương tự như hàm

import csv
88. Nó nhận các tham số sau

  • 2
    00. Đây có thể là bất kỳ đối tượng nào có phương thức
    2
    01. Một lần nữa, bạn nên mở nó bằng tham số
    import csv
    
    95 nếu nó là đối tượng tệp
  • import csv
    
    91. Một tham số tùy chọn được sử dụng để xác định một tập hợp các tham số dành riêng cho một CSV cụ thể
  • 2
    04. Điều này chỉ ra rằng bạn có thể chuyển một loạt các đối số từ khóa tùy chọn để ghi đè hành vi của phương ngữ hiện tại

Lớp học
2
05 và
2
06

Các lớp

2
05 và
2
06 từ mô-đun csv cũng hữu ích cho việc đọc và ghi vào tệp CSV. Mặc dù chúng tương tự như chức năng đọc và ghi, các lớp này sử dụng các đối tượng từ điển để đọc và ghi dữ liệu

2
05

Lớp

2
05 tạo một đối tượng ánh xạ thông tin trong mỗi hàng của tệp đã cho tới một từ điển có các khóa có thể được chỉ định bởi tham số tùy chọn
2
11. Nếu bạn bỏ qua tham số
2
11, các giá trị trong hàng đầu tiên sẽ được sử dụng làm khóa

Đây là một ví dụ rất cơ bản về việc đọc nội dung của một tệp có tên là people. csv sử dụng lớp

2
05

1
import csv
2
3
import csv
5_______15_______
import csv
7
5
0_______9
6
    for row in reader:
12_______2
2
3

Lý tưởng nhất là bạn sẽ có cùng số hàng trong tệp của mình bằng số trường bạn đã chuyển vào tham số

2
11. Điều gì xảy ra nếu đó không phải là trường hợp?

Thứ nhất, hàng mà bạn đang đọc có nhiều trường hơn hàng trong

2
11. Trong trường hợp này, dữ liệu còn lại sẽ được đặt trong một danh sách và sau đó được lưu trữ trong một tên trường có giá trị được xác định bởi tham số
2
16. Thứ hai, một hàng có ít trường hơn hàng trong
2
11. Trong trường hợp này, các giá trị còn thiếu sẽ được điền bằng cách sử dụng giá trị bạn đã chỉ định cho tham số
2
18

2
06

Lớp

2
06 tạo một đối tượng ánh xạ từ điển lên các hàng mà bạn muốn xuất hoặc ghi vào tệp của mình. Giống như
2
05, lớp này cũng chấp nhận
2
11 làm tham số thứ hai của nó. Thứ tự của các trường khác nhau bên trong
2
11 xác định thứ tự các giá trị trong các từ điển khác nhau sẽ được chuyển đến phương thức
2
24

Không giống như lớp

2
05, tham số
2
11 trong lớp
2
06 không phải là tùy chọn. Điều này có ý nghĩa bởi vì một số từ điển có thể có một bộ khóa khác và việc sử dụng tham số
2
11 sẽ xóa mọi sự mơ hồ xung quanh việc sử dụng các khóa đó

Từ điển mà bạn muốn ghi vào tệp CSV có thể thiếu khóa có trong

2
11. Trong những trường hợp như vậy, giá trị được xác định bởi tham số
2
18 tùy chọn. Nếu bất kỳ từ điển nào có khóa phụ không có trong
2
11, bạn có thể sử dụng khóa
2
32 để chỉ định việc cần làm. Hành vi mặc định là đưa ra một ngoại lệ
2
33

Phương ngữ và định dạng

Một phương ngữ là một lớp trợ giúp được sử dụng để xác định các tham số cho một trường hợp hoặc cụ thể. Các tham số phương ngữ và định dạng cần được khai báo khi gọi hàm hoặc phương thức đọc hoặc ghi

Có một số thuộc tính được hỗ trợ bởi một phương ngữ

  • 2
    36. Chuỗi một ký tự được sử dụng để phân tách các trường. Nó mặc định là
    2
    37
  • 2
    38. Chuỗi một ký tự được sử dụng để trích dẫn các trường chứa các ký tự đặc biệt. Điều này bao gồm ký tự
    2
    39 hoặc ký tự
    2
    40. Nó mặc định là
    2
    41
  • 2
    42. Kiểm soát cách các phiên bản của quotechar xuất hiện bên trong một trường sẽ được trích dẫn. Nó có thể là
    2
    43 hoặc
    2
    44. Hãy nhớ rằng bạn sẽ phải đặt giá trị của escapechar nếu doublequote được đặt thành
    2
    44
  • 2
    46. Một chuỗi được người viết sử dụng để thoát khỏi dấu phân cách nếu trích dẫn được đặt thành
    2
    47
  • 2
    48. Một chuỗi được sử dụng để kết thúc các dòng được tạo bởi
    2
    35. Nó mặc định là
    2
    50
  • 2
    51. Nếu được đặt thành
    2
    43, mọi khoảng trắng ngay sau dấu phân cách sẽ bị bỏ qua
  • 2
    53. Nếu được đặt thành
    2
    43, nó sẽ tạo ra một ngoại lệ đối với đầu vào CSV không hợp lệ
  • 2
    55. Kiểm soát thời điểm tạo dấu ngoặc kép khi đọc hoặc ghi vào CSV

Thuộc tính trích dẫn có thể có một trong bốn giá trị có thể. đó là

  • 2
    56. Điều này yêu cầu
    2
    35 trích dẫn tất cả các trường
  • 2
    58. Điều này yêu cầu
    2
    35 chỉ trích dẫn những trường có chứa ký tự đặc biệt như dấu phân cách hoặc ký tự
    2
    40
  • 2
    61. Điều này yêu cầu
    2
    35 trích dẫn tất cả các trường không phải là số và chuyển đổi các trường số thành số thực
  • 2
    63. Điều này yêu cầu
    2
    35 không bao giờ trích dẫn bất kỳ trường nào

Đọc tệp CSV

Hãy xem cách đọc tệp CSV bằng hàm và các lớp mà chúng tôi đã thảo luận ở trên

Chúng tôi sẽ làm việc với tệp CSV có tên là dữ liệu trạng thái. csv chứa thông tin về các tiểu bang khác nhau ở Hoa Kỳ. Ở đây chúng tôi có tệp CSV chứa tên của các tiểu bang, thủ đô, thành phố lớn nhất và dân số của họ

Dưới đây là mã để đọc dữ liệu trong CSV của chúng tôi bằng cách sử dụng cả hàm

import csv
87 và lớp
2
66

Đọc tệp CSV với
import csv
87

1
import csv
2
2
7_______13_______
2
9
4
3
1
5
    for row in reader:
6
import csv
0

Trong đoạn mã trên, chúng tôi nhập mô-đun csv và sau đó mở tệp CSV của chúng tôi dưới dạng

2
68. Sau đó, chúng tôi xác định đối tượng người đọc và sử dụng hàm
import csv
88 để trích xuất dữ liệu vào đối tượng. Sau đó, chúng tôi lặp lại đối tượng
2
34 và truy xuất từng hàng dữ liệu của chúng tôi

Chúng tôi hiển thị dữ liệu đã đọc bằng cách in nội dung của nó ra bàn điều khiển. Bạn có thể thấy rằng dữ liệu trong các hàng riêng lẻ đã được trả về dưới dạng danh sách

đầu ra

1
3
7_______12_______
3
9_______13_______
with open['people.csv', newline=''] as File:  
1
4
14_______3
5
14_______5

Đọc tệp CSV bằng DictReader

Như tôi đã đề cập ở trên, lớp

2
05 cho phép chúng ta đọc tệp CSV bằng cách ánh xạ dữ liệu vào từ điển thay vì trả về danh sách như trong trường hợp của hàm
import csv
88. Đây là cách đọc tệp CSV bằng lớp
2
05

1
import csv
2
3
2
9
4
4
2
5
    for row in reader:
6
import csv
0

Như thường lệ, trước tiên chúng tôi nhập mô-đun csv. Sau đó chúng ta định nghĩa đối tượng reader và sử dụng lớp

2
05 để trích xuất dữ liệu vào đối tượng. Sau đó, chúng tôi lặp lại đối tượng
2
34 và truy xuất từng hàng dữ liệu của chúng tôi

Cuối cùng, chúng tôi xuất dữ liệu đã đọc vào bàn điều khiển. Bạn có thể thấy rằng dữ liệu trong các hàng riêng lẻ lần này được trả về dưới dạng từ điển

đầu ra

1
4
8
2
    reader = csv.reader[File]
0
3
    reader = csv.reader[File]
2
4
    reader = csv.reader[File]
4

Sử dụng lớp

2
05 sẽ tốt hơn vì nó xuất dữ liệu của chúng ta dưới dạng từ điển, có thể dễ dàng làm việc hơn trong một số tình huống nhất định

Chúng tôi đã không chuyển bất kỳ giá trị nào cho tham số

2
11 trong ví dụ trước, vì vậy,
2
05 đã sử dụng các trường ở hàng đầu tiên làm khóa từ điển. Lần này, hãy chuyển một danh sách làm giá trị cho tham số
2
11. Tôi đã cố ý loại bỏ Thành phố và Dân số lớn nhất khỏi danh sách
2
11 để cho bạn thấy cách
2
05 ứng xử trong trường hợp này. Tôi cũng chuyển một giá trị cho tham số
2
16 vì chúng tôi có nhiều mục trong mỗi hàng hơn các trường trong
2
11

1
import csv
2
3
    reader = csv.reader[File]
9
4
5
2
9
6
17_______4
2
2
    for row in reader:
5
7
import csv
0

Đoạn mã trên cho đầu ra sau

1
    for row in reader:
0_______12_______
    for row in reader:
2
3
    for row in reader:
4
4
18_______6
5
18_______8

Vì chúng tôi đã chuyển các khóa từ điển trong

2
11, hàng đầu tiên không còn được sử dụng để tạo khóa và được xuất dưới dạng từ điển. Cũng lưu ý rằng tất cả các giá trị bổ sung trong mỗi hàng hiện đang được lưu trữ trong danh sách và được gán cho khóa Dữ liệu bổ sung trong từ điển

Ghi vào tệp CSV

Bây giờ chúng ta hãy xem cách ghi dữ liệu vào tệp CSV bằng cách sử dụng hàm

2
85 và lớp
2
86 đã thảo luận ở phần đầu của hướng dẫn này

Ghi vào tệp CSV bằng cách sử dụng
import csv
98

Đoạn mã dưới đây ghi dữ liệu được xác định vào tệp

2
88

1
import csv
2
3
6
3
4
5
6
6
6
6
8
2
2
import csv
00

Trước tiên, chúng tôi nhập mô-đun csv và hàm

import csv
86 sẽ tạo một đối tượng phù hợp để viết. Chúng tôi sử dụng phương pháp
2
24 vì có một hàng duy nhất có dữ liệu mà chúng tôi muốn ghi vào tệp

Đây là CSV của chúng tôi với dữ liệu chúng tôi đã ghi vào đó

Ghi vào tệp CSV bằng DictWriter

Hãy ghi dữ liệu sau vào tệp CSV của chúng tôi. Nó chứa thông tin về ba tiểu bang khác nhau của Hoa Kỳ trong một danh sách, với các phần tử riêng lẻ là một từ điển

1
import csv
02
2
import csv
04
3
import csv
06
4
import csv
08
5
import csv
10
6
import csv
12
2
2
import csv
14
5
7
import csv
16
import csv
17
import csv
18
import csv
19
import csv
20
import csv
21
import csv
22
import csv
23
import csv
14
import csv
25
import csv
26
import csv
27
import csv
28
import csv
29
import csv
30
import csv
31
import csv
32
import csv
33
import csv
34
import csv
35
import csv
36

Mã này như hình bên dưới

1
import csv
2
3
import csv
41
4
5
6
6
6
import csv
46
2
2
import csv
48

Trước tiên, chúng tôi xác định tên trường dưới dạng danh sách và lưu trữ chúng trong biến

2
91. Điều này cho phép đối tượng
2
35 biết tiêu đề của từng cột trong tệp CSV. Phương thức
2
93 sẽ ghi tất cả các hàng mà chúng tôi cung cấp cho nó cùng một lúc vào tệp CSV. Điều kiện duy nhất cho
2
93 là các hàng mà chúng tôi muốn viết có thể lặp lại được

Bản thân mỗi hàng riêng lẻ cũng phải là một chuỗi hoặc số có thể lặp lại nếu chúng ta sử dụng hàm

import csv
86 như chúng ta đã làm trong ví dụ trước. Mặt khác, mỗi hàng phải là một từ điển ánh xạ
2
11 thành chuỗi hoặc số để lớp
2
06 xử lý

Hãy thử ghi dữ liệu sau vào tệp CSV của chúng tôi ngay bây giờ

1
import csv
02
2
import csv
04
3
import csv
54
4
import csv
56
5
import csv
14
6
import csv
60
2
2
import csv
62
5
7
import csv
64
import csv
17
import csv
66
import csv
19
import csv
68
import csv
21
import csv
34
import csv
23
import csv
36

Có hai điều đáng chú ý về dữ liệu trên. Đầu tiên, tiểu bang Florida của chúng tôi đang thiếu một số thông tin. Thứ hai, bang Georgia có một số thông tin bổ sung dựa trên những gì chúng tôi đang lưu trữ trong bảng. Thứ ba, các khóa cho tiểu bang Georgia không theo thứ tự mà chúng tôi đã xác định các trường cho tệp CSV của mình

Làm thế nào chúng ta có thể xử lý dữ liệu không chuẩn như thế này? . Đối với các khóa bị thiếu, chúng tôi chỉ cần cung cấp giá trị mặc định bằng cách sử dụng tham số

2
18. Nó được đặt thành một chuỗi rỗng theo mặc định. Tuy nhiên, bạn cũng có thể chỉ định một giá trị tùy chỉnh chẳng hạn như Unknown. Đối với các phím phụ, bạn có thể sử dụng tham số
2
32 để yêu cầu
2
06 bỏ qua các phím đó. Tham số này sẽ tăng một
2
33 theo mặc định

Đây là cách ghi vào tất cả các hàng cùng một lúc

1
import csv
2
3
import csv
77
4
5
6
6
6
import csv
82
2
2
import csv
48

Tệp CSV của chúng tôi sẽ trông như thế này sau tất cả các thao tác ghi

Phần kết luận

Hướng dẫn này đã trình bày hầu hết những gì cần thiết để có thể đọc và ghi thành công vào tệp CSV bằng cách sử dụng các hàm và lớp khác nhau do Python cung cấp. Các tệp CSV đã được sử dụng rộng rãi trong các ứng dụng phần mềm vì chúng dễ đọc và dễ quản lý cũng như kích thước nhỏ giúp chúng xử lý và truyền tương đối nhanh

Học Python

Tìm hiểu Python với hướng dẫn hướng dẫn Python hoàn chỉnh của chúng tôi, cho dù bạn mới bắt đầu hay bạn là một lập trình viên dày dặn đang tìm cách học các kỹ năng mới

Bài đăng này đã được cập nhật với sự đóng góp từ Monty Shokeen. Monty là một nhà phát triển full-stack, người cũng thích viết hướng dẫn và tìm hiểu về các thư viện JavaScript mới

Phương thức writer[] và Reader[] trong tệp CSV là gì?

Ghi tệp CSV bằng csv. Csv. Hàm writer[] trả về một đối tượng nhà văn để chuyển đổi dữ liệu của người dùng thành một chuỗi được phân tách . Chuỗi này sau này có thể được sử dụng để ghi vào tệp CSV bằng hàm writerow[].

Làm cách nào để sử dụng tệp CSV trong Python?

Đọc tệp CSV bằng Python .
Sử dụng Thư viện CSV. nhập csv với open[". /wq. csv", 'r'] dưới dạng tệp. csvreader = csv. trình đọc [tệp] cho hàng trong csvreader. print[row] Ở đây chúng tôi đang nhập thư viện csv để sử dụng. .
Sử dụng thư viện Pandas. nhập gấu trúc dưới dạng dữ liệu pd = pd. read_csv["bwq. csv"] dữ liệu

Bạn có thể ghi trực tiếp vào tệp CSV bằng Python không?

Lớp DictWriter[] có thể được sử dụng để ghi vào tệp CSV từ từ điển Python . Ở đây, tệp - tệp CSV nơi chúng tôi muốn ghi vào. tên trường - một đối tượng danh sách sẽ chứa các tiêu đề cột chỉ định thứ tự ghi dữ liệu trong tệp CSV.

Chủ Đề