Làm cách nào để sửa đổi tệp csv trong python?

Bài viết này sẽ hướng dẫn chi tiết cách làm việc với file Excel và cách chỉnh sửa dữ liệu cụ thể với Python

Trước tiên, chúng ta sẽ tìm hiểu cách làm việc với các tệp CSV bằng cách đọc, viết và cập nhật chúng. Sau đó, chúng ta sẽ xem cách đọc tệp, lọc tệp theo trang tính, tìm kiếm hàng/cột và cập nhật ô của tệp xlsx

Hãy bắt đầu với định dạng bảng tính đơn giản nhất. CSV

Phần 1 — Tệp CSV

Tệp CSV là tệp giá trị được phân tách bằng dấu phẩy, trong đó dữ liệu văn bản thuần túy được hiển thị ở định dạng bảng. Chúng có thể được sử dụng với bất kỳ chương trình bảng tính nào, chẳng hạn như Microsoft Office Excel, Google Spreadsheets hoặc LibreOffice Calc

Tuy nhiên, tệp CSV không giống như các tệp bảng tính khác vì chúng không cho phép bạn lưu ô, cột, hàng hoặc công thức. Hạn chế của họ là họ cũng chỉ cho phép một tờ trên mỗi tệp. Kế hoạch của tôi cho phần đầu tiên của bài viết này là chỉ cho bạn cách tạo tệp CSV bằng Python 3 và mô-đun thư viện tiêu chuẩn CSV

Hướng dẫn này sẽ kết thúc với hai kho lưu trữ GitHub và một ứng dụng web trực tiếp thực sự sử dụng mã của phần thứ hai của hướng dẫn này [chưa được cập nhật và sửa đổi cho một mục đích cụ thể]

Ghi vào tệp CSV

Đầu tiên, mở một tệp Python mới và nhập mô-đun Python CSV

Nhập csv

Mô-đun CSV

Mô-đun CSV bao gồm tất cả các phương thức cần thiết được tích hợp sẵn. Bao gồm các

  • csv. người đọc
  • csv. nhà văn
  • csv. DictReader
  • csv. DictWriter
  • và những người khác

Trong hướng dẫn này, chúng tôi sẽ tập trung vào các phương pháp của nhà văn, DictWriter và DictReader. Những điều này cho phép bạn chỉnh sửa, sửa đổi và thao tác dữ liệu được lưu trữ trong tệp CSV

Ở bước đầu tiên, chúng ta cần xác định tên của tệp và lưu nó dưới dạng một biến. Chúng ta cũng làm tương tự với thông tin header và data

Biến

Bây giờ chúng ta cần tạo một hàm có tên là nhà văn sẽ nhận ba tham số. tiêu đề, dữ liệu và tên tệp

chức năng nhà văn

Bước tiếp theo là sửa đổi hàm ghi để nó tạo một tệp chứa dữ liệu từ các biến tiêu đề và dữ liệu. Điều này được thực hiện bằng cách viết hàng đầu tiên từ biến tiêu đề và sau đó viết bốn hàng từ biến dữ liệu [có bốn hàng vì có bốn bộ trong danh sách]

Tài liệu Python chính thức mô tả cách csv. phương pháp nhà văn hoạt động. Tôi thực sự khuyên bạn nên dành một phút để đọc nó

Và Voila. Bạn đã tạo tệp CSV đầu tiên có tên imdb_top_4. csv. Mở tệp này bằng ứng dụng bảng tính ưa thích của bạn và bạn sẽ thấy nội dung như thế này

Sử dụng LibreOffice Calc để xem kết quả

Kết quả có thể được viết như thế này nếu bạn chọn mở tệp trong một số ứng dụng khác

Sử dụng SublimeText để xem kết quả. Cập nhật tệp CSV

Để cập nhật tệp này, bạn nên tạo một hàm mới có tên là trình cập nhật sẽ chỉ nhận một tham số có tên là tên tệp

Hàm này trước tiên mở tệp được xác định trong biến tên tệp và sau đó lưu tất cả dữ liệu mà nó đọc từ tệp bên trong biến có tên readData. Bước thứ hai là mã hóa cứng giá trị mới và đặt nó thay vì giá trị cũ ở vị trí readData[0][‘Rating’]

Bước cuối cùng trong hàm là gọi hàm ghi bằng cách thêm một cập nhật tham số mới sẽ cho hàm biết bạn đang thực hiện cập nhật

csv. DictReader được giải thích thêm trong tài liệu Python chính thức tại đây

Để trình ghi hoạt động với một tham số mới, bạn cần thêm một tham số mới ở mọi nơi trình ghi được xác định. Quay lại nơi bạn gọi hàm ghi lần đầu tiên và thêm “viết” làm tham số mới

Ngay bên dưới chức năng ghi, hãy gọi trình cập nhật và chuyển tham số tên tệp vào đó

Bây giờ bạn cần sửa đổi chức năng ghi để có một tham số mới có tên tùy chọn

Từ giờ trở đi, chúng tôi hy vọng sẽ nhận được hai tùy chọn khác nhau cho chức năng người viết [viết và cập nhật]. Do đó, chúng ta nên thêm hai câu lệnh if để hỗ trợ chức năng mới này. Phần đầu tiên của chức năng dưới “nếu tùy chọn == “viết. ” đã được biết đến với bạn. Bạn chỉ cần thêm “tùy chọn elif == “cập nhật”. phần mã và phần khác giống như chúng được viết dưới đây

hoan hô. bạn đã hoàn thành

Bây giờ mã của bạn sẽ trông giống như thế này

Mật mã

Bạn cũng có thể tìm thấy mã ở đây

https. //github. com/GoranAviani/CSV-Viewer-and-Editor

Trong phần đầu tiên của bài viết này, chúng ta đã thấy cách làm việc với các tệp CSV. Chúng tôi đã tạo và cập nhật một tệp như vậy

Phần 2 — Tệp xlsx

Trong nhiều ngày cuối tuần tôi đã làm việc trên dự án này. Tôi đã bắt đầu làm việc với nó vì có nhu cầu về loại giải pháp này trong công ty của tôi. Ý tưởng đầu tiên của tôi là xây dựng giải pháp này trực tiếp trong hệ thống của công ty tôi, nhưng sau đó tôi sẽ không có gì để viết, phải không?

Tôi xây dựng giải pháp này bằng thư viện Python 3 và openpyxl. Lý do tại sao tôi chọn openpyxl là vì nó đại diện cho một giải pháp hoàn chỉnh để tạo trang tính, tải, cập nhật, đổi tên và xóa chúng. Nó cũng cho phép chúng tôi đọc hoặc ghi vào các hàng và cột, hợp nhất hoặc hủy hợp nhất các ô hoặc tạo biểu đồ excel Python, v.v.

Thuật ngữ Openpyxl và thông tin cơ bản
  • Sổ làm việc là tên cho một tệp Excel trong Openpyxl
  • Một workbook bao gồm các sheet [mặc định là 1 sheet]. Các trang tính được tham chiếu theo tên của chúng
  • Một trang tính bao gồm các hàng [dòng ngang] bắt đầu từ số 1 và các cột [dòng dọc] bắt đầu từ chữ A
  • Các hàng và cột dẫn đến một lưới và các ô biểu mẫu có thể chứa một số dữ liệu [giá trị số hoặc chuỗi] hoặc công thức

Openpyxl trong tài liệu độc đáo và tôi khuyên bạn nên xem tại đây

Bước đầu tiên là mở môi trường Python của bạn và cài đặt openpyxl trong thiết bị đầu cuối của bạn

pip install openpyxl

Tiếp theo, nhập openpyxl vào dự án của bạn và sau đó tải sổ làm việc vào biến Tệp

Như bạn có thể thấy, mã này in tất cả các trang tính theo tên của chúng. Sau đó, nó chọn trang tính có tên là “khách hàng 1” và lưu nó vào một biến Trang tính hiện tại. Ở dòng cuối cùng, mã in giá trị nằm ở vị trí B4 của trang tính "khách hàng 1"

Mã này hoạt động bình thường nhưng nó rất khó mã hóa. Để làm cho điều này năng động hơn, chúng tôi sẽ viết mã sẽ

  • Đọc tập tin
  • Nhận tất cả tên trang tính
  • Lặp qua tất cả các trang tính
  • Ở bước cuối cùng, mã sẽ in các giá trị nằm trong các trường B4 của mỗi trang tìm thấy trong sổ làm việc

Điều này tốt hơn trước, nhưng nó vẫn là một giải pháp được mã hóa cứng và nó vẫn giả định giá trị bạn sẽ tìm kiếm nằm trong ô B4, điều này thật ngớ ngẩn. ]

Tôi cho rằng dự án của bạn sẽ cần tìm kiếm bên trong tất cả các trang tính trong tệp Excel để tìm một giá trị cụ thể. Để làm điều này, chúng tôi sẽ thêm một vòng lặp for nữa trong phạm vi “ABCDEF” và sau đó chỉ cần in tên ô và giá trị của chúng

Chúng tôi đã làm điều này bằng cách giới thiệu “cho hàng trong phạm vi. " vòng. Phạm vi của vòng lặp for được xác định từ ô ở hàng 1 đến số hoặc hàng tối đa của trang tính. Tìm kiếm vòng lặp thứ hai trong các tên cột được xác định trước “ABCDEF”. Trong vòng lặp thứ hai, chúng tôi sẽ hiển thị vị trí đầy đủ của ô [tên cột và số hàng] và một giá trị

Tuy nhiên, trong bài viết này, nhiệm vụ của tôi là tìm một cột cụ thể có tên là “điện thoại” rồi duyệt qua tất cả các hàng của cột đó. Để làm điều đó, chúng ta cần sửa đổi mã như dưới đây

Mã đã sửa đổi này đi qua tất cả các ô của mỗi trang tính và giống như trước khi phạm vi hàng là động và phạm vi cột là cụ thể. Đoạn mã lặp qua các ô và tìm ô chứa văn bản “điện thoại”. Khi mã tìm thấy ô cụ thể, nó sẽ thông báo cho người dùng biết văn bản nằm trong ô nào. Mã thực hiện việc này cho mọi ô bên trong tất cả các trang tính trong tệp Excel

Bước tiếp theo là đi qua tất cả các hàng của cột cụ thể đó và in các giá trị

Điều này được thực hiện bằng cách thêm một hàm có tên get_column_letter để tìm một chữ cái của một cột. Sau khi tìm thấy chữ cái của cột, chúng tôi lặp qua tất cả các hàng của cột cụ thể đó. Điều này được thực hiện với hàm get_all_values_by_cell_letter sẽ in tất cả giá trị của các ô đó

kết thúc

áo ngực. Có rất nhiều điều bạn có thể làm sau này. Kế hoạch của tôi là xây dựng một ứng dụng trực tuyến sẽ chuẩn hóa tất cả các số điện thoại của Thụy Điển được lấy từ một hộp văn bản và cung cấp cho người dùng khả năng chỉ cần sao chép kết quả từ cùng một hộp văn bản. Bước thứ hai trong kế hoạch của tôi là mở rộng chức năng của ứng dụng web để hỗ trợ tải tệp Excel lên, xử lý số điện thoại bên trong các tệp đó [chuẩn hóa chúng thành định dạng tiếng Thụy Điển] và cung cấp lại các tệp đã xử lý cho người dùng

Tôi đã thực hiện cả hai nhiệm vụ đó và bạn có thể thấy chúng trực tiếp trên trang Công cụ của Incodaq của tôi. trang com

https. //công cụ. incodaq. com/

Ngoài ra, mã từ phần thứ hai của bài viết này có sẵn trên GitHub

https. //github. com/GoranAviani/Manipulate-Excel-bảng tính

Cảm ơn bạn đã đọc. Xem thêm các bài viết như thế này trên hồ sơ Trung bình của tôi. https. //vừa phải. com/@goranaviani và những nội dung thú vị khác mà tôi xây dựng trên trang GitHub của mình. https. //github. com/GoranAviani

Chúng tôi có thể chỉnh sửa tệp CSV bằng Python không?

Vì “các hàng” là một đối tượng danh sách nên chúng ta có thể sử dụng các phương thức danh sách Python để chỉnh sửa tệp CSV của mình trước khi ghi lại vào một tệp .

Có thể chỉnh sửa tệp CSV không?

Tệp CSV [Các giá trị được phân tách bằng dấu phẩy] là một loại tệp đặc biệt mà bạn có thể tạo hoặc chỉnh sửa trong Excel . Thay vì lưu trữ thông tin trong cột, tệp CSV lưu trữ thông tin được phân tách bằng dấu phẩy.

Chủ Đề