programing

이 사전 목록을 csv 파일로 변환하려면 어떻게 해야 합니까?

copyandpastes 2023. 1. 2. 23:20
반응형

이 사전 목록을 csv 파일로 변환하려면 어떻게 해야 합니까?

다음과 같은 사전 목록이 있습니다.

toCSV = [{'name':'bob','age':25,'weight':200},{'name':'jim','age':31,'weight':180}]

이를 다음과 같은 csv 파일로 변환하려면 어떻게 해야 합니까?

name,age,weight
bob,25,200
jim,31,180
import csv

to_csv = [
    {'name': 'bob', 'age': 25, 'weight': 200},
    {'name': 'jim', 'age': 31, 'weight': 180},
]

keys = to_csv[0].keys()

with open('people.csv', 'w', newline='') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(to_csv)

python 3은 조금 다르지만 훨씬 간단하고 오류가 적습니다.CSV에 파일을 여는 방법을 알려주는 것이 좋습니다.utf8다른 사용자가 데이터를 보다 쉽게 휴대할 수 있도록 하기 위해 인코딩을 사용합니다(따라서 다음과 같이 보다 제한적인 인코딩을 사용하지 않습니다).latin1)

import csv
toCSV = [{'name':'bob','age':25,'weight':200},
         {'name':'jim','age':31,'weight':180}]
with open('people.csv', 'w', encoding='utf8', newline='') as output_file:
    fc = csv.DictWriter(output_file, 
                        fieldnames=toCSV[0].keys(),

                       )
    fc.writeheader()
    fc.writerows(toCSV)
  • 주의:csvpython 3에서는newline=''파라미터를 지정하지 않으면 Excel/opencalc로 열 때 CSV에 공백줄이 표시됩니다.

다른 방법으로는: 의 csv 핸들러보다pandas모듈.부호화 문제에 대한 내성이 높아져 파일을 로드할 때 CSV 내의 문자열 번호가 자동으로 올바른 유형(int, float 등)으로 변환됩니다.

import pandas
dataframe = pandas.read_csv(filepath)
list_of_dictionaries = dataframe.to_dict('records')
dataframe.to_csv(filepath)

주의:

  • 당신이 파일을 열어주면 판다들이 당신을 위해 파일을 열어줄 것이고, 디폴트로 파일을 열어줄 것입니다.utf8python3 및 헤더도 알아낼 수 있습니다.
  • 데이터 프레임은 CSV가 제공하는 구조와 동일하지 않기 때문에 로드 시 한 줄을 추가하여 동일한 것을 얻을 수 있습니다.dataframe.to_dict('records')
  • panda를 사용하면 csv 파일의 열 순서를 훨씬 쉽게 제어할 수 있습니다.기본적으로 알파벳순으로 표시되지만 열 순서를 지정할 수 있습니다.바닐라 포함csv모듈, 공급해야 합니다.OrderedDict또는 임의의 순서로 표시됩니다(python< 3.5로 동작하는 경우).자세한 내용은 Python Pandars DataFrame에서 열 순서 보존을 참조하십시오.

사전 목록이 하나 있는 경우:

import csv
with open('names.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})

@User와 @BiXiC가 UTF-8에 대한 도움을 요청했기 때문에 @Matthew의 솔루션 변형입니다.(코멘트를 할 수 없기 때문에 답변드립니다.)

import unicodecsv as csv
toCSV = [{'name':'bob','age':25,'weight':200},
         {'name':'jim','age':31,'weight':180}]
keys = toCSV[0].keys()
with open('people.csv', 'wb') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(toCSV)

행 리스트(메모리에 맞지 않을 수 있음)나 헤더 카피(아마도,write_csv함수는 범용입니다.

def gen_rows():
    yield OrderedDict(name='bob', age=25, weight=200)
    yield OrderedDict(name='jim', age=31, weight=180)

def write_csv():
    it = genrows()
    first_row = it.next()  # __next__ in py3
    with open("people.csv", "w") as outfile:
        wr = csv.DictWriter(outfile, fieldnames=list(first_row))
        wr.writeheader()
        wr.writerow(first_row)
        wr.writerows(it)

주의: 여기서 사용되는 OrderedDict 컨스트럭터는 python > 3.4의 순서만 유지합니다.순서가 중요한 경우OrderedDict([('name', 'bob'),('age',25)])형태.

import csv

with open('file_name.csv', 'w') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(('colum1', 'colum2', 'colum3'))
    for key, value in dictionary.items():
        writer.writerow([key, value[0], value[1]])

이것은 데이터를 .csv 파일에 쓰는 가장 간단한 방법입니다.

import csv
toCSV = [{'name':'bob','age':25,'weight':200},
         {'name':'jim','age':31,'weight':180}]
header=['name','age','weight']     
try:
   with open('output'+str(date.today())+'.csv',mode='w',encoding='utf8',newline='') as output_to_csv:
       dict_csv_writer = csv.DictWriter(output_to_csv, fieldnames=header,dialect='excel')
       dict_csv_writer.writeheader()
       dict_csv_writer.writerows(toCSV)
   print('\nData exported to csv succesfully and sample data')
except IOError as io:
    print('\n',io)

언급URL : https://stackoverflow.com/questions/3086973/how-do-i-convert-this-list-of-dictionaries-to-a-csv-file

반응형