Ошибка при попытке реализовать заголовок в CSV-файле - PullRequest
0 голосов
/ 16 января 2019

Я успешно экспортировал данные, полученные из строк, которые я прочитал, в файл CSV, но мне нужно установить заголовок для каждой строки, чтобы я мог их идентифицировать. Я пробовал это:

file = open("llistaClients.csv", "w")
file.write("ID;NAME;PHONE;EMAIL;STREET;CITY")
for row in rows:        
    print(row['id'], row['name'], row['phone'], row['email'], row['street'], row['city'], sep="\t")
    dades = str(row['id']) + ";" + str(row['name']) + ";" + str(row['phone']) + ";" + str(row['email']) \
            + ";" + str(row['street']) + ";" + str(row['city']);
    file.write(dades + "\n")

Без этого file.write("ID;NAME;PHONE;EMAIL;STREET;CITY") все работает отлично:

enter image description here

Но если я попытаюсь его использовать, он просто не откроется в Excel. Но если я открываю тот же файл с помощью блокнота, он действительно применяет этот заголовок.

У меня есть потенциальное исправление, которое позволяет без проблем поместить заголовок, используя: (другие поля)

    import csv

    with open("llistaProductes.csv","w") as csvfile:

    fieldnames = ['id','name','list_price','create_date'];
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader();
    for row in rows:
        #print(dict(row))
        print(row['id'], row['name'], row['list_price'], row['create_date'], sep="\t")
        writer.writerow({'id': row['id'], 'name': row['name'],
                         'list_price': row['list_price'], 'create_date': row['create_date']})

Но используя это, я получаю это в Excel:

enter image description here

Он не разделяет столбцы .. Что неплохо, но не так, как должно ..

Итак, вопрос в том, почему я не могу правильно использовать первый метод? И если второй - тот, который я должен использовать, как отделить колонки. Спасибо.

1 Ответ

0 голосов
/ 17 января 2019

После заголовка должен быть символ новой строки:

file.write("ID;NAME;PHONE;EMAIL;STREET;CITY\n")

Не вижу причины, по которой Excel не открывает этот файл. Вы получаете сообщение об ошибке?

Что касается второго примера, вы можете указать Excel использовать определенный разделитель, добавив в начало файла следующее:

sep=,
id,name,email, ..
...