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ạng | Phần mở rộng | Ghi chú |
|---|---|---|
| CSV (đầu vào) | .csv | Tả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) | .md | Sử dụng wb.save_as_markdown("file.md") |