Python xóa n dòng đầu tiên khỏi tệp csv
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách phân tích cú pháp các giá trị từ các tệp Giá trị được phân tách bằng dấu phẩy (CSV) bằng nhiều tiện ích tích hợp Bash khác nhau Show
Đầu tiên, chúng ta sẽ thảo luận về các điều kiện tiên quyết để đọc các bản ghi từ một tệp. Sau đó, chúng ta sẽ khám phá các kỹ thuật khác nhau để phân tích tệp CSV thành các biến Bash và danh sách mảng Cuối cùng, chúng tôi sẽ kiểm tra một số công cụ của bên thứ ba để phân tích cú pháp CSV nâng cao 2. điều kiện tiên quyếtHãy xem xét ngắn gọn các tiêu chuẩn được xác định cho tệp CSV
Các tệp CSV chứa các bản ghi có dấu phẩy hoặc ngắt dòng trong các chuỗi được trích dẫn không thuộc phạm vi của chúng tôi; Bây giờ, hãy thiết lập tệp CSV mẫu tiêu chuẩn của chúng tôi
2. 1. Đọc bản ghi từ một tệpChúng tôi sẽ chạy một ví dụ để đọc các bản ghi từ tệp đầu vào của chúng tôi
Ở đây, chúng tôi đã sử dụng lệnh đọc để đọc các bản ghi được phân tách bằng dấu ngắt dòng (\n) của tệp CSV của chúng tôi. Chúng tôi sẽ kiểm tra đầu ra từ tập lệnh của chúng tôi
Như chúng ta có thể thấy, có một sự phức tạp; . Vì vậy, hãy đi sâu vào các giải pháp 2. 2. Bỏ qua dòng tiêu đềChúng tôi sẽ chạy một ví dụ khác để loại trừ dòng tiêu đề khỏi đầu ra
Ở đây chúng tôi đã sử dụng lệnh tail để đọc từ dòng thứ hai của tệp. Sau đó, chúng tôi đã chuyển đầu ra dưới dạng tệp vào vòng lặp while bằng cách sử dụng quy trình thay thế. <(. ) cho phép chúng tôi chỉ định lệnh đuôi và cho phép Bash đọc từ đầu ra của nó dưới dạng tệp
Bây giờ chúng ta sẽ thử một cách khác để đạt được kết quả tương tự
Trong cách tiếp cận này, chúng tôi đã sử dụng lệnh exec để thay đổi đầu vào tiêu chuẩn để đọc từ tệp. Sau đó, chúng tôi sử dụng lệnh đọc để xử lý dòng tiêu đề. Sau đó, chúng tôi đã xử lý tệp còn lại trong vòng lặp while 3. Phân tích giá trị từ tệp CSVCho đến nay, chúng tôi đã đọc các bản ghi được phân tách bằng ngắt dòng từ các tệp CSV. Từ giờ trở đi, chúng ta sẽ xem xét các phương pháp để đọc các giá trị từ mỗi bản ghi dữ liệu 3. 1. Từ tất cả các cộtHãy xem cách lưu trữ các giá trị trường khi chúng tôi lặp qua tệp CSV
Lưu ý rằng chúng ta đang đặt Dấu tách trường đầu vào (IFS) thành “,” trong vòng lặp while. Do đó, chúng ta có thể phân tích các giá trị trường được phân tách bằng dấu phẩy thành các biến Bash bằng lệnh đọc Chúng tôi cũng sẽ kiểm tra đầu ra được tạo khi thực thi tập lệnh trên
3. 2. Từ vài cột đầu tiênCó thể có những trường hợp chúng tôi chỉ quan tâm đến việc đọc một vài cột đầu tiên của tệp để xử lý Chúng tôi sẽ chứng minh điều này bằng một ví dụ ________số 8Trong ví dụ này, chúng ta có thể lưu trữ giá trị trong trường thứ nhất và trường thứ hai của CSV đầu vào trong các biến rec_column1 và rec_column2 tương ứng. Đáng chú ý, chúng tôi đã lưu trữ các trường còn lại trong biến rec_remaining Hãy nhìn vào đầu ra của kịch bản của chúng tôi
3. 3. Từ số cột cụ thểMột lần nữa, chúng tôi sẽ sử dụng quy trình thay thế để chỉ chuyển các cột cụ thể vào vòng lặp while để đọc. Để tìm nạp các cột đó, chúng tôi sẽ sử dụng lệnh cắt 0Do đó, chúng tôi chỉ có thể phân tích cú pháp cột đầu tiên và cột thứ ba của CSV đầu vào của mình Chúng tôi sẽ xác thực nó với đầu ra 13. 4. Từ tên cột cụ thểCó thể có những tình huống mà chúng tôi có thể cần phân tích cú pháp các giá trị từ CSV dựa trên tên cột trong dòng tiêu đề Chúng tôi sẽ minh họa điều này bằng một tập lệnh đơn giản do người dùng điều khiển 2Tập lệnh này lấy col_b làm đầu vào từ người dùng và in giá trị cột tương ứng cho mọi bản ghi trong tệp Chúng tôi đã tính toán vị trí của một cột bằng cách sử dụng kết hợp các lệnh tr, awk, grep và nl Đầu tiên, chúng tôi đã chuyển đổi dấu phẩy trong dòng tiêu đề thành ngắt dòng bằng lệnh tr. Sau đó, chúng tôi nối thêm số dòng ở đầu mỗi dòng bằng lệnh nl. Tiếp theo, chúng tôi đã tìm kiếm tên cột trong đầu ra bằng lệnh grep và cắt bớt các khoảng trắng trước đó bằng lệnh tr Cuối cùng, chúng tôi đã sử dụng lệnh awk để lấy trường đầu tiên, tương ứng với số cột Chúng tôi sẽ lưu tập lệnh trên dưới dạng parse_csv. sh để thực hiện 3Theo dự kiến, khi "Giá" được cung cấp làm đầu vào, chỉ các giá trị của số cột tương ứng với chuỗi "Giá" trong tiêu đề được in. Cách tiếp cận này có thể đặc biệt hữu ích khi trình tự các cột trong tệp CSV không được đảm bảo 4. Ánh xạ các cột của tệp CSV vào mảng BashTrong phần trước, chúng tôi đã phân tích các giá trị trường thành các biến Bash cho mỗi bản ghi. Bây giờ chúng ta sẽ kiểm tra các phương thức để phân tích toàn bộ cột CSV thành mảng Bash 4Chúng tôi đang sử dụng lệnh thay thế để loại trừ dòng tiêu đề bằng lệnh tail, sau đó sử dụng lệnh cắt để lọc các cột tương ứng. Đáng chú ý, bộ dấu ngoặc đơn đầu tiên được yêu cầu để giữ đầu ra của lệnh thay thế trong biến arr_record1 dưới dạng một mảng Hãy kiểm tra đầu ra tập lệnh 55. Phân tích cú pháp tệp CSV thành một mảng BashCó thể có trường hợp chúng tôi muốn ánh xạ toàn bộ tệp CSV thành một mảng. Sau đó chúng ta có thể sử dụng mảng để xử lý các bản ghi Hãy kiểm tra việc thực hiện 6Trong ví dụ này, chúng tôi đọc dòng từ CSV đầu vào của mình, sau đó nối nó vào mảng arr_csv (+= được sử dụng để nối các bản ghi vào mảng Bash). Sau đó, chúng tôi đã in các bản ghi của mảng bằng vòng lặp for Hãy kiểm tra đầu ra 7Đối với Bash phiên bản 4 trở lên, chúng ta cũng có thể điền vào mảng bằng lệnh readarray 8Điều này đọc các dòng từ đầu vào. csv thành một biến mảng, array_csv. Tùy chọn -t sẽ xóa các dòng mới ở cuối mỗi dòng 6. Phân tích tệp CSV có ngắt dòng và dấu phẩy trong bản ghiCho đến nay, chúng tôi đã sử dụng đầu vào tệp. csv để chạy tất cả các hình minh họa của chúng tôi Bây giờ, chúng tôi sẽ tạo một tệp CSV khác có chứa ngắt dòng và dấu phẩy trong các chuỗi được trích dẫn 9Có thể có thêm một số hoán vị và tổ hợp ngắt dòng, dấu phẩy và dấu ngoặc kép trong tệp CSV. Vì lý do này, việc xử lý các tệp CSV như vậy chỉ với các tiện ích tích hợp Bash là một nhiệm vụ phức tạp. Nói chung, các công cụ của bên thứ ba, như csvkit, được sử dụng để phân tích cú pháp CSV nâng cao Tuy nhiên, một giải pháp thay thế phù hợp khác là mô-đun CSV của Python, vì Python thường được cài đặt sẵn trên hầu hết các bản phân phối Linux 7. Phần kết luậnTrong bài viết này, chúng tôi đã nghiên cứu nhiều kỹ thuật để phân tích các giá trị từ tệp CSV Đầu tiên, chúng ta đã thảo luận về tiêu chuẩn CSV và kiểm tra các bước để đọc bản ghi từ một tệp. Tiếp theo, chúng tôi đã triển khai một số nghiên cứu điển hình để phân tích cú pháp các giá trị trường của tệp CSV. Chúng tôi cũng đã khám phá các cách xử lý dòng tiêu đề tùy chọn của tệp CSV Sau đó, chúng tôi đã trình bày các kỹ thuật để lưu trữ các cột hoặc tất cả các bản ghi của tệp CSV vào các mảng Bash. Cuối cùng, chúng tôi đã giới thiệu ngắn gọn về một số công cụ của bên thứ ba để phân tích cú pháp CSV nâng cao tác giả dưới cùng Nếu bạn có một vài năm kinh nghiệm trong hệ sinh thái Linux và bạn muốn chia sẻ trải nghiệm đó với cộng đồng, hãy xem Nguyên tắc đóng góp của chúng tôi |