python csv 형식의 파일 읽 기
reader(csvfile[, dialect='excel'][, fmtparam])
매개 변수 표:
csvfile 필요 한 것 은 교체 (Iterator) 를 지원 하 는 대상 이 며, 매번 next 방법 을 호출 할 때마다 되 돌아 오 는 값 은 문자열 (string) 입 니 다. 일반적인 파일 (file) 대상 이나 목록 (list) 대상 이 적 용 됩 니 다. 파일 대상 이 라면 'b' 로고 파 라미 터 를 추가 해 야 합 니 다.dialect 인 코딩 스타일 은 기본적으로 excel 방식, 즉 쉼표 (,) 구분 이 고 csv 모듈 도 excel - tab 스타일, 즉 탭 문자 (tab) 구분 을 지원 합 니 다.다른 방식 은 스스로 정의 해 야 하 며, register 를 호출 할 수 있 습 니 다.dialect 방법 으로 등록 및 listdialects 방법 으로 등 록 된 모든 인 코딩 스타일 목록 을 조회 합 니 다.fmtparam 포맷 매개 변 수 는 이전 dialect 대상 이 지정 한 인 코딩 스타일 을 덮어 쓰 는 데 사 용 됩 니 다.
예:
import csv
reader = csv.reader(file('your.csv', 'rb'))
for line in reader:
print line
writer(csvfile[, dialect='excel'][, fmtparam])
매개 변수 표 (약: reader, 참조)
예:
import csv
writer = csv.writer(file('your.csv', 'wb'))
writer.writerow(['Column1', 'Column2', 'Column3'])
lines = [range(3) for i in range(5)]
for line in lines:
writer.writerow(line)
DictReader
reader 와 차이 가 많 지 않 습 니 다. CSV 를 읽 는 데 사 용 됩 니 다. 교체 형식 이 아 닌 사전 (dict) 형식의 반환 만 생 성 됩 니 다.
DictWriter
제 가 주로 말씀 드 리 고 싶 은 것 은 DictWriter 입 니 다. 제 가 왜 DictWriter 를 사용 하 는 것 을 좋아 하 겠 습 니까? 일반적인 writer 는 손 으로 목록 을 구축 해 야 하기 때 문 입 니 다. 특히 양식 을 통 해 제출 할 때 저 는 예전 에 zope 플랫폼 에서 개발 해 왔 기 때문에 zope 는 고급 표 증빙 모델 을 지원 합 니 다.즉, 폼 을 정의 할 때 해당 하 는 로 고 를 추가 하여 제출 한 폼 데 이 터 를 자동 으로 기록 (records) 형식 으로 만 들 수 있 습 니 다. 즉, 모든 데 이 터 를 사전 목록 으로 만 드 는 것 입 니 다.이렇게 하면 나 는 폼 데 이 터 를 DictWriter 에 직접 전달 하여 csv 를 생 성 할 수 있다. 물론 이것 은 네가 데이터 의 정확성 을 확보 할 수 있 는 전제 에서 이다.자, 다음은 제 가 이 zope 의 고급 폼 데이터 형식 을 간단하게 설명 하 겠 습 니 다.
예:
<form action='test_form_action' method=post>
<input type="text" name="rows.Column1:records" value="0" />
<input type="text" name="rows.Column2:records" value="1" />
<input type="text" name="rows.Column3:records" value="2" />
<input type="text" name="rows.Column4:records" value="3" />
<br />
<input type="text" name="rows.Column1:records" value="0" />
<input type="text" name="rows.Column2:records" value="1" />
<input type="text" name="rows.Column3:records" value="2" />
<input type="text" name="rows.Column4:records" value="3" />
<br />
<input type="text" name="rows.Column1:records" value="0" />
<input type="text" name="rows.Column2:records" value="1" />
<input type="text" name="rows.Column3:records" value="2" />
<input type="text" name="rows.Column4:records" value="3" />
<br />
<input type="text" name="rows.Column1:records" value="0" />
<input type="text" name="rows.Column2:records" value="1" />
<input type="text" name="rows.Column3:records" value="2" />
<input type="text" name="rows.Column4:records" value="3" />
<br />
<input type="text" name="rows.Column1:records" value="0" />
<input type="text" name="rows.Column2:records" value="1" />
<input type="text" name="rows.Column3:records" value="2" />
<input type="text" name="rows.Column4:records" value="3" />
<br />
<input type="submit" value="Submit CSV" />
</form>
양식 제출 후 결 과 는:
rows = [{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}]
이렇게 하면 DictWriter. writerows 방법 을 직접 호출 하여 처리 할 수 있 습 니 다.
import csv
fieldnames = ['Column1', 'Column2', 'Column3', 'Column4']
dict_writer = csv.DictWriter(file('your.csv', 'wb'), fieldnames=fieldnames)
dict_writer.writerow(fieldnames) # CSV
dict_writer.writerows(rows) # rows
* 메모: 여기 csv 파일 기록 은 External Method 의 지원 이 필요 합 니 다. zope 에서 권한 샌 드 박스 의 문제 로 csv 모듈 을 직접 조작 하여 파일 시스템 을 읽 을 수 없 기 때 문 입 니 다.
이렇게 사용 하 는 것 이 매우 편리 하지 않 습 니까? 위 폼 을 만 드 는 DTML 코드 를 드 립 니 다.
<form action='test_form' method=post>
<dtml-in "range(5)">
<dtml-in "range(4)">
<input type="text" name="rows.Column&dtml-sequence-number;:records" value="&dtml-sequence-item;" />
</dtml-in>
<br />
</dtml-in>
<input type="submit" value="Submit CSV" />
</form>
당신 은 자신의 필요 에 따라 이 폼 의 생 성 을 고 칠 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.