Więc próbuję utworzyć kilka kolumn dla informacji i nazywam kolumny lub etykiety u góry kolumn, ale kod zapisuje je w następujący sposób:

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

A wszystko to w jednej komórce i chcę, aby każda z nich znajdowała się w innej kolumnie. Kod jest następujący:

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)
0
Emilio Alvarado Gonzlez Aragn 1 kwiecień 2020, 07:15

5 odpowiedzi

Najlepsza odpowiedź

Ok, więc po jakimś czasie odkryłem, jak to się dzieje z powodu konfiguracji systemu Windows. Rozwiązałem to zmieniając "," głęboko w konfiguracji systemu Windows.

  1. Przejdź do ustawień systemu Windows
  2. Przejdź do czasu i języka
  3. Dodatkowe opcje daty, godziny i ustawień regionalnych
  4. Zmień format daty, godziny i liczb
  5. Dodatkowe ustawienia
  6. Zmień „Separator listy” na,

Przepraszam, jeśli słowa są złe, a nie język ojczysty, a okna są w innym języku

0
Emilio Alvarado Gonzlez Aragn 25 kwiecień 2020, 22:54

Po uruchomieniu kodu otrzymuję następujący wynik:

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

To jest poprawne dane wyjściowe dla wiersza nagłówka CSV. Zgodnie z RFC-4180:

Może być opcjonalna linia nagłówka pojawiająca się jako pierwsza linia pliku w tym samym formacie, co normalne wiersze rekordów. Ten nagłówek będzie zawierał nazwy odpowiadające polom w pliku i powinien zawierać taką samą liczbę pól jak rekordy w pozostałej części pliku (obecność lub brak wiersza nagłówka należy wskazać poprzez opcjonalny parametr "nagłówek" tego Typ MIME). Na przykład:

field_name,field_name,field_name CRLF
aaa,bbb,ccc CRLF
zzz,yyy,xxx CRLF```
1
knif3 1 kwiecień 2020, 04:31

W zależności od ustawień (regionalnych) program Excel może domyślnie użyć innego separatora podczas otwierania pliku (na przykład ,, ; lub może <tab>).

Możesz zmusić program Excel do używania przecinka w następujący sposób:

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

To jest „specyficzne dla programu Excel”, ale większość innych czytników csv powinna rozpoznać lub zignorować ten pierwszy wiersz.

Inną opcją jest użycie innego separatora.

Możesz także zaimportować plik csv zamiast po prostu otwierać plik. Daje to możliwość wybrania separatora i kilku innych ustawień.

1
Danny_ds 1 kwiecień 2020, 11:56

Jeśli rozumiem, używasz programu Excel (lub innych arkuszy kalkulacyjnych) do otwierania pliku csv. Cały plik csv, który otworzysz w programie Excel, będzie używał jednej komórki dla każdego wiersza, ponieważ użycie „kolumn” nie istnieje w pliku csv.

Powinieneś spróbować użyć xlsxwriter lub czegoś podobnego, aby utworzyć plik xlsx

0
Syb 1 kwiecień 2020, 04:30

CSV oznacza, że wartości są oddzielone przecinkami, dlatego gdy przeglądasz je w programie Excel, zobaczysz to wszystko w 1 kolumnie. Możesz ustawić separator w programie Excel na „” i powinien on rozdzielać wszystkie pola na różne kolumny. Alternatywnie możesz użyć modułu xlwt, aby napisać do programu 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])

Możesz także użyć pand, ale wydaje się to odrobinę przesadne.

0
Abhinav23 1 kwiecień 2020, 04:33