복붙노트

[PYTHON] 이 사전 목록을 CSV 파일로 변환하려면 어떻게합니까?

PYTHON

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

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

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

이것을 다음과 같이 보이는 csv 파일로 변환하려면 어떻게해야합니까?

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

해결법

  1. ==============================

    1.

    import 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)
    

    편집 : 내 이전 솔루션 주문을 처리하지 않습니다. Wilduck이 언급했듯이 DictWriter가 더 적합합니다.

  2. ==============================

    2.파이썬의 csv 모듈에는 도움이 될 DictWriter가있다.

    파이썬의 csv 모듈에는 도움이 될 DictWriter가있다.

  3. ==============================

    3.이것은 하나의 사전 목록을 가지고있을 때입니다 :

    이것은 하나의 사전 목록을 가지고있을 때입니다 :

    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'})
    
  4. ==============================

    4.@User와 @BiXiC가 UTF-8에 대한 도움을 요청했기 때문에 여기 @Matthew의 해결책이 다양합니다. (나는 코멘트를 할 수 없다. 그래서 나는 대답한다.)

    @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)
    
  5. ==============================

    5.다음은 행 목록 (어쩌면 메모리에 맞지 않음) 또는 헤더 사본 (아마도 write_csv 함수가 일반적 일 수도 있음)이 없다고 가정 할 때 좀더 일반적인 해결책입니다.

    다음은 행 목록 (어쩌면 메모리에 맞지 않음) 또는 헤더 사본 (아마도 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)]) 형식을 사용하십시오.

  6. ==============================

    6.

    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 파일에 데이터를 쓰는 가장 간단한 방법입니다.

  7. from https://stackoverflow.com/questions/3086973/how-do-i-convert-this-list-of-dictionaries-to-a-csv-file by cc-by-sa and MIT license