Cách Chuyển Đổi CSV sang JSON trong Python FOSS

Cách Chuyển Đổi CSV sang JSON trong Python FOSS

Vấn đề

Chuyển đổi tệp CSV sang JSON bằng Aspose.Cells FOSS trong Python. Tải CSV bằng load_csv_workbook(), đọc từng hàng bằng iter_rows() để xây dựng một danh sách các từ điển Python, sau đó tuần tự hoá sang JSON bằng mô-đun json tiêu chuẩn.

Điều kiện tiên quyết

Để chuyển đổi CSV sang JSON bằng Aspose.Cells FOSS trong Python, hãy đảm bảo môi trường của bạn đáp ứng các yêu cầu sau.

  • Python 3.7 hoặc mới hơn đã được cài đặt
  • Cài đặt Aspose.Cells FOSS qua pip install aspose-cells-foss>=26.3.1
  • Nhập thư viện bằng from aspose.cells_foss import load_csv_workbook
  • Có kiến thức cơ bản về xử lý tệp Python và mô-đun chuẩn json

Các bước chuyển đổi

Bước 1: Tải tệp CSV

Sử dụng hàm tiện ích load_csv_workbook() để tải tệp CSV vào một workbook mới. Điều này khởi tạo biểu diễn dữ liệu bảng tính trong bộ nhớ.

from aspose.cells_foss import load_csv_workbook

workbook = load_csv_workbook("data.csv")
worksheet = workbook.worksheets[0]

Bước 2: Đọc tiêu đề và các hàng

Sử dụng iter_rows(values_only=True) để trích xuất tất cả các hàng dưới dạng các tuple của giá trị ô. Hàng đầu tiên được coi là hàng tiêu đề.

all_rows = list(worksheet.cells.iter_rows(values_only=True))

# Read the header row (first row)
headers = [str(v) if v is not None else f"col{i}" for i, v in enumerate(all_rows[0])]

Bước 3: Xây dựng danh sách các từ điển và tuần tự hoá thành JSON

Lặp lại các hàng còn lại, tạo một dict cho mỗi hàng dựa trên tên tiêu đề, sau đó sử dụng json.dump() để ghi tệp JSON.

import json

rows = [dict(zip(headers, row)) for row in all_rows[1:]]

with open("output.json", "w", encoding="utf-8") as f:
    json.dump(rows, f, indent=2, default=str)

print(f"Converted {len(rows)} rows to output.json")

Ví dụ mã

Ví dụ hoàn chỉnh từ đầu đến cuối kết hợp cả ba bước:

import json
from aspose.cells_foss import load_csv_workbook

# Step 1: Load CSV
workbook = load_csv_workbook("data.csv")
worksheet = workbook.worksheets[0]

# Step 2: Extract all rows; first row is headers
all_rows = list(worksheet.cells.iter_rows(values_only=True))
if not all_rows:
    print("No data found in CSV")
else:
    headers = [str(v) if v is not None else f"col{i}" for i, v in enumerate(all_rows[0])]

    # Step 3: Build list of dicts from remaining rows
    rows = [dict(zip(headers, row)) for row in all_rows[1:]]

    # Step 4: Write JSON
    with open("output.json", "w", encoding="utf-8") as f:
        json.dump(rows, f, indent=2, default=str)

    print(f"Converted {len(rows)} rows to output.json")

Định dạng được hỗ trợ

Aspose.Cells FOSS hỗ trợ tải tệp CSV và xuất ra JSON thông qua cách tiếp cận được mô tả ở trên. Thư viện cũng hỗ trợ lưu trực tiếp sang các định dạng khác.

Định dạngPhần mở rộngGhi chú
CSV (đầu vào).csvTải bằng load_csv_workbook("file.csv")
JSON (đầu ra).jsonĐược xây dựng bằng Python json.dump() sau khi lặp qua các ô
XLSX (đầu vào/đầu ra).xlsxĐịnh dạng Excel Open XML tiêu chuẩn
Markdown (đầu ra).mdSử dụng wb.save_as_markdown("file.md")

Xem thêm

 Tiếng Việt