[이 이미 응답 한에서 다른 질문이 있습니다 How to replace a column using Python’s built-in .csv writer module?] 나는 발견을하고 거대한에서 (URL 중 하나를 열 특정) 교체해야파이썬에 내장 된 .CSV 모듈
Excel .csv 파일. 필자는 스크립팅 언어를 가르치려는 초기 단계에 있기 때문에 파이썬으로이 솔루션을 구현하려고합니다.
항목의 내용을 변경 한 후 .csv 파일에 다시 쓰려고 할 때 문제가 있습니다. 작가를 사용하는 방법에 대해서는 official csv module documentation을 읽었지만이 사례를 다루는 예제는 없습니다. 특히, 한 루프에서 읽기, 바꾸기 및 쓰기 작업을 수행하려고합니다. 그러나 for 루프의 인수와 writer.writerow()의 매개 변수 모두에서 동일한 '행'참조를 사용할 수 없습니다. 따라서 for 루프를 변경 한 후에 파일에 어떻게 다시 써야합니까?
편집 :() 함수 나는 열려면 "RB"와 "WB"를 추가 : 나는 여전히 같은 결과
편집 # 2, S. 로트와 지미의 제안을 구현 S. 로트의 제안에 따라
import csv
#filename = 'C:/Documents and Settings/username/My Documents/PALTemplateData.xls'
csvfile = open("PALTemplateData.csv","rb")
csvout = open("PALTemplateDataOUT.csv","wb")
reader = csv.reader(csvfile)
writer = csv.writer(csvout)
changed = 0;
for row in reader:
row[-1] = row[-1].replace('/?', '?')
writer.writerow(row) #this is the line that's causing issues
changed=changed+1
print('Total URLs changed:', changed)
편집 : 참고로,이 인터프리터에서 새로운 전체 역 추적은 다음과 같습니다
Traceback (most recent call last):
File "C:\Documents and Settings\g41092\My Documents\palScript.py", line 13, in <module>
for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
그래, 나는 그 문제도 처리했다. 우리가 점점 더 가까워지고있는 것 같습니다. 추적이 짧아졌습니다. :) – ignorantslut
파일에 다시 쓰려고 시도하기 전에 생각했습니다. (예 : 내가 오른쪽 열을 찾는 작업을하고있을 때. .csv) 스크립트는 rb없이 정상적으로 작동했습니다. – ignorantslut
""rb "와"wb "는 절대적으로 필요합니다.": 파이썬 3에서는 아닙니다. newline = ''으로 open()을 호출해야합니다. – Miles