Задать вопрос
  • Как записать Словарь в CSV по столбцам в Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    У меня ваш код работает отлично. Создает csv с разделителями запятыми, корректно открывающийся в стороннем приложении (например, Numbers на macos).

    Возможно, вам хотелось сделать csv с табуляциями - используйте параметр dialect (описан в документации к библиотеке csv).
    Вот я чуток переделал для примера:
    import csv
    import os
    from pathlib import Path
    
    # Данные из переменной 'a'
    my_row = {
        'url': 'https://www.coindesk.com/policy/2024/08/08/ftx-alameda-ordered-to-pay-127b-to-creditors-by-us-judge/',
        'title': 'FTX, Alameda Ordered to Pay $12.7B to Creditors by U.S. Judge',
        'author': 'Shaurya Malwa',
        'date': 'Aug 8, 2024 at 6:44 a.m. UTC'
    }
    # делаю три строчки для примера массива.
    data = [my_row] * 3
    
    # Имя CSV файла
    dir_path = Path(os.path.dirname(os.path.realpath(__file__)))
    pathname = dir_path / 'data'
    if not pathname.exists():
        os.mkdir(pathname)
    filename = pathname / 'data3.csv'
    
    
    
    # Открываем файл в режиме добавления (append) с возможностью чтения (a+)
    with open(filename, mode='a+', newline='', encoding='utf-8') as file:
        # Создаем объект writer для записи данных в CSV
        writer = csv.DictWriter(file, fieldnames=data[0].keys(), dialect='excel-tab')
    
        # Если файл пустой или только что создан, записываем заголовки
        if not filename.exists() or file.tell() == 0:
            writer.writeheader()  # Записываем заголовки (названия столбцов)
    
        # Записываем строки данных (содержимое столбцов)
        for row in data:
            writer.writerow(row)
    Ответ написан
    1 комментарий