2010-06-24 9 views
2
  "Type","Name","Description","Designation","First-term assessment","Second-term assessment","Total" 
      "Subject","Nick","D1234","F4321",10,19,29 
      "Unit","HTML","D1234-1","F4321",18,, 
      "Topic","Tags","First Term","F4321",18,, 
      "Subtopic","Review of representation of HTML",,,,, 

모든 CSV로 변환하고 당신이 통지로파이썬 스크립트

헤더 위에 표시된 하나입니다 엑셀 시트에서 값이 일곱 coulmns가 들어있는 위 그 아래의 데이터가

내가 파이썬 스크립트에서 다음을 생성하는 스크립트를 가지고, 변화, 스크립트는 다음과 같습니다이 데이터는 t 속한 말을 위의 스크립트를 수정하는 방법
from django.db import transaction 
import sys 
import csv 
import StringIO 



file = sys.argv[1] 
no_cols_flag=0 
flag=0 
header_arr=[] 


print file 
f = open(file, 'r') 



while (f.readline() != ""): 
    for i in [line.split(',') for line in open(file)]: # split on the separator 
    print "===========================================================" 
    row_flag=0 
    row_d="" 
    for j in i: # for each token in the split string 
     row_flag=1 
     print j 


     if j: 
     no_cols_flag=no_cols_flag+1 
     data=j.strip() 
     print j 

    break 

오 특정 열 머리글 ..

덕분에 ..

답변

9

당신은 csv module을 수입하지만, 그것을 사용하지 않을 것입니다. 왜?

당신이

import csv 
reader = csv.reader(open(file, "rb"), dialect="excel") # Python 2.x 
# Python 3: reader = csv.reader(open(file, newline=""), dialect="excel") 

을 할 경우에 당신은 당신이 필요로하는 모든 것을 포함하는 reader 개체를 얻을; 첫 번째 행에는 헤더가 포함되고 후속 행에는 해당 위치의 데이터가 포함됩니다.

수 있습니다 더 나은 (내가 제대로 이해하는 경우) :

import csv 
reader = csv.DictReader(open(file, "rb"), dialect="excel") # Python 2.x 
# Python 3: reader = csv.DictReader(open(file, newline=""), dialect="excel") 

DictReader 키와 같은 열 머리글을 사용 dict s의 순서를 반환 이상 반복하고 다음 데이터 값으로 할 수있다, 그래서

for row in reader: 
    print(row) 

가 출력

{'Name': 'Nick', 'Designation': 'F4321', 'Type': 'Subject', 'Total': '29', 'First-term assessment': '10', 'Second-term assessment': '19', 'Description': 'D1234'} 
{'Name': 'HTML', 'Designation': 'F4321', 'Type': 'Unit', 'Total': '', 'First-term assessment': '18', 'Second-term assessment': '', 'Description': 'D1234-1'} 
{'Name': 'Tags', 'Designation': 'F4321', 'Type': 'Topic', 'Total': '', 'First-term assessment': '18', 'Second-term assessment': '', 'Description': 'First Term'} 
{'Name': 'Review of representation of HTML', 'Designation': '', 'Type': 'Subtopic', 'Total': '', 'First-term assessment': '', 'Second-term assessment': '', 'Description': ''} 
+0

나 수정이 edent the indentation – Hulk

+3

Python 2.x에서 * 항상 파일을 이진 모드 ('rb'또는 'wb', 적절하게)로 엽니 다. –

+0

@ John Machin : 왜죠? csv 모듈 문서는 이것에 관해 아무 말도하지 않고'b' 플래그없이 파일을 여는 데 문제가 없었습니다. 일부 예제에서는이를 사용하고 일부는 사용하지 않습니다. 당신은 아주 옳을지도 모르지만, 저는이 배경의 논리를 알고 싶습니다. –

관련 문제