Python CSV, элементы остаются в одной ячейке в текстовом файле - PullRequest
0 голосов
/ 01 апреля 2020

Поэтому я пытаюсь создать несколько столбцов для информации, и я называю столбцы или метки в верхней части столбцов, но код записывает их следующим образом:

Name,Age,Height,Weight,Budget,Objective,Type of diet

И все это в одной ячейке, и я хочу, чтобы они были в разных столбцах. Код следующий:

import csv

fields = ["Name","Age", "Height", "Weight", "Budget", "Objective",  '''Type of diet''']
filename = "nutritec.csv"

with open(filename, 'w+') as csvfile:
    csvwriter = csv.writer(csvfile)
    csvwriter.writerow(fields)

Ответы [ 5 ]

1 голос
/ 01 апреля 2020

В зависимости от настроек (локали), Excel может использовать другой разделитель по умолчанию при открытии файла (например, ,, ; или, возможно, <tab>).

Вы можете принудительно использовать Excel использовать запятую следующим образом:

sep=,
Name,Age,Height,Weight,Budget,Objective,Type of diet

Это 'Excel Speci c', но большинство других читателей CSV должны распознавать или игнорировать эту первую строку.

Другой вариант заключается в использовании другой разделитель.

Вы также можете импортировать файл csv вместо простого открытия файла. Это дает вам возможность выбрать разделитель и некоторые другие настройки.

1 голос
/ 01 апреля 2020

Запустив ваш код, я получаю следующий вывод:

Name,Age,Height,Weight,Budget,Objective,Type of diet

Это правильный вывод для строки заголовка CSV. В соответствии с RF C -4180 :

Там может быть необязательная строка заголовка, появляющаяся в качестве первой строки файла с тем же форматом, что и обычные строки записи. Этот заголовок будет содержать имена, соответствующие полям в файле, и должен содержать то же количество полей, что и записи в остальной части файла (наличие или отсутствие строки заголовка должно указываться с помощью необязательного параметра header MIME тип) Например:

field_name,field_name,field_name CRLF
aaa,bbb,ccc CRLF
zzz,yyy,xxx CRLF```
0 голосов
/ 26 апреля 2020

Хорошо, через некоторое время я обнаружил, что проблема решается из-за конфигурации Windows. Я решил это, изменив "," глубоко в windows конфигурации.

  1. Go до Windows Настройки
  2. Go до времени и языка
  3. Дополнительные параметры даты, времени и региональных настроек
  4. Изменить дату, время и числовые форматы
  5. Дополнительные настройки
  6. Изменить «Разделитель списка» на,

Извините, если слова неверны, не на языке натальной и windows на другом языке

0 голосов
/ 01 апреля 2020

CSV означает, что значения разделены запятыми и, следовательно, при просмотре в Excel вы увидите все это в 1 столбце. Вы можете установить разделитель в Excel на «,», и он должен разделить все поля на разные столбцы. В качестве альтернативы вы можете использовать модуль xlwt для записи в Excel.

from xlwt import Workbook
wb = Workbook()
sheet1 = wb.add_sheet('Sheet 1') 

for i in range(len(fields)):
 sheet1.write(0, i, fields[i])

Вы также можете использовать pandas, но это кажется чрезмерным.

0 голосов
/ 01 апреля 2020

Если я понимаю, вы используете Excel (или любые другие электронные таблицы), чтобы открыть файл CSV. Все CSV, которые вы откроете в Excel, будут использовать по одной ячейке для каждой строки, так как в CSV не существует "столбцов".

Вы должны попробовать использовать xlsxwriter или что-то подобное для создания файла xlsx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...