2016-09-27 3 views
0

Output CSv file 현재 파이썬을 사용하여 파일의 데이터를 csv 파일에 저장하려고합니다.dictwriter를 사용하여 파이썬을 사용하여 csv 파일에 구조화되지 않은 데이터 쓰기

data_list{} = [{'row': '0', 't0': '8.69E-005', 'elems': ' 4 96 187 ', 'Tspan': '5E-006', 'NP': '625','wave0': '123.65 333.56 3333.78 567.89 345678.77 34E-08'}] 

내 출력은 다음과 같아야합니다 : 다음과 같이 내 데이터 보인다

row t0  elems Tspan NP wave0 
0 8.69E-005 4 5E-006 625 123.65 
       96    333.56 
       187    3333.78 
            567.89 
            345678.77 
            34E-08 

먼저 헤더를 제공 한 다음 아래 값. 나는 elems와 wave0를 제외한 모든 부분에 대해 헤더 부분과 행 부분을 얻는 데있어 성공적이었습니다.

파이썬 코드는 : 당신이 당신의 data_list 변수 내부의 사전 후처럼

with open('cc.csv','w', newline='') as out_file: 
    writer = csv.DictWriter(out_file, fieldnames=data_list[0].keys()) 
    writer.writeheader() 
    for data in data_list: 
      writer.writerow(data) 
+0

출력이 확실히 CSV 형식이 아닙니다. 왜 당신은 csv 모듈을 사용하고 싶습니까? –

+0

나는 cc.csv 파일에 데이터를 넣고있다. 그리고 나는 몇 개의 열에 대한 데이터를 쓸 수 있었지만, elems와 wave0에 대해서는 데이터가 구분 기호 공간을 기반으로 다음 행에 들어가길 원합니다. –

+0

data_list에 두 개의 요소가 있다면 출력은 어떻게 생겼을까요? –

답변

0

것 같습니다.

한 사전 귀하의 목록 : 원하는 출력을 얻기 위해, 당신은 약간의 작업을 수행 할 필요가 있기 위하여려고하고있다

data_list = [{'row': '0', 't0': '8.69E-005', 'elems': ' 4 96 187 ', 'Tspan': '5E-006', 'NP': '625','wave0': '123.65 333.56 3333.78 567.89 345678.77 34E-08'}] 

먼저, 당신은 당신의 출력 열을 정의해야합니다

output_cols = ['row', 't0', 'elems', 'Tspan', 'NP', 'wave0'] 

은 그럼 당신은 함께 사전의 values 및 이후 *zip*에서 모든 목록을 목록을 작성해야

# Python2 
from itertools import izip_longest 
import csv 

data = [data_list[0].get(x).strip().split(" ") for x in output_cols] 
data = izip_longest(*data) 
with open('somefile.csv','w') as outfile: 
    file_writer = csv.writer(outfile, delimiter="\t", lineterminator="\n") 
    file_writer.writerow(output_cols) 
    file_writer.writerows(data) 

python3을 사용하는 경우 from itertools import izip_longestfrom itertools import zip_longest으로 바꿔야합니다.

귀하의 모든 데이터가 첫 번째 사전 (data_list[0])이라고 가정하십시오. 실제 목록이 그 이상인 경우 더 많은 데이터를 공유하십시오. somefile.csv

내용 :

row  t0  elems Tspan NP  wave0 
0  8.69E-005 4  5E-006 625  123.65 
       96      333.56 
       187     3333.78 
             567.89 
             345678.77 
             34E-08 

나는이 도움이되기를 바랍니다.

+0

고마워요. 그것은 작동했습니다 :) –

+0

somefile.csv 유효하지 않습니다 CSV (RFC 4180) – Marichyasana

+0

나는 잘 모르겠습니다. 정교하게 제발 주시겠습니까? – Abdou

관련 문제