Как преобразовать CSV в JSON в Python FOSS
Задача
Конвертировать CSV‑файл в JSON с помощью Aspose.Cells FOSS в Python. Загрузите CSV с load_csv_workbook(), прочитайте каждую строку, используя iter_rows(), чтобы построить список словарей Python, затем сериализуйте в JSON, используя стандартный модуль json.
Требования
Чтобы преобразовать CSV в JSON с помощью Aspose.Cells FOSS в Python, убедитесь, что ваша среда соответствует следующим требованиям.
- Установлен Python 3.7 или новее
- Установите Aspose.Cells FOSS через
pip install aspose-cells-foss>=26.3.1 - Импортируйте библиотеку с помощью
from aspose.cells_foss import load_csv_workbook - Базовое знакомство с работой с файлами в Python и стандартным модулем
json
Шаги конвертации
Шаг 1: Загрузить CSV‑файл
Используйте удобную функцию load_csv_workbook() для загрузки CSV‑файла в новую книгу. Это инициализирует представление данных таблицы в памяти.
from aspose.cells_foss import load_csv_workbook
workbook = load_csv_workbook("data.csv")
worksheet = workbook.worksheets[0]Шаг 2: Чтение заголовков и строк
Используйте iter_rows(values_only=True) для извлечения всех строк в виде кортежей значений ячеек. Первая строка рассматривается как строка заголовков.
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])]Шаг 3: Создать список словарей и сериализовать в JSON
Итерируйте оставшиеся строки, создайте словарь для каждой строки, используя имена заголовков в качестве ключей, затем используйте json.dump() для записи 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")Пример кода
Полный сквозной пример, объединяющий все три шага:
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")Поддерживаемые форматы
Aspose.Cells FOSS поддерживает загрузку файлов CSV и экспорт в JSON с помощью подхода, показанного выше. Библиотека также поддерживает прямое сохранение в другие форматы.
| Формат | Расширение | Примечания |
|---|---|---|
| CSV (ввод) | .csv | Загрузить с помощью load_csv_workbook("file.csv") |
| JSON (вывод) | .json | Создано с помощью Python json.dump() после итерации по ячейкам |
| XLSX (ввод/вывод) | .xlsx | Стандартный формат Excel Open XML |
| Markdown (вывод) | .md | Использовать wb.save_as_markdown("file.md") |