해결된 질문
작성
·
28
·
수정됨
1
2-4. [응용] 엑셀문서 값을 필드에 입력하기 관련입니다.
강의 내용 중 for문 안에 ws.Range를 넣어, 엑셀문서의 모든 행을 출력해보는 내용이 있습니다.
여기서 다루는 엑셀의 데이터는 아래와 같습니다.
여기서 다루는 범위는 2행(마크, 남 ...)부터 7행(슬아, 여, ...)이므로,
for row in range(2,7):
이라고 해야 맞는 게 아닌가 싶은데,
for row in range(2,7):
로 해보면 아래와 같이 원하는 결과가 아닙니다.
실제 7행인 ['리사', '여', '1969년 11월 7일', '게임'] 가 빠진 결과가 나옵니다.
for row in range(2,7):
data = list(
ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]
)
data[2] = data[2].strftime("%Y년 %#m월 %#d일")
print(data)
['마크', '남', '1984년 5월 14일', 'VR']
['빌', '남', '1955년 10월 28일', '기부']
['일론', '남', '1971년 6월 28일', '트위터']
['제프', '남', '1964년 1월 12일', '독서']
['리사', '여', '1969년 11월 7일', '게임']
반면에,
for row in range(2,8):
이라고 해야만 아래와 같이 엑셀의 2행부터 7행의 데이터가 원하는대로 출력이 됩니다.
for row in range(2,8):
data = list(
ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]
)
data[2] = data[2].strftime("%Y년 %#m월 %#d일")
print(data)
['마크', '남', '1984년 5월 14일', 'VR']
['빌', '남', '1955년 10월 28일', '기부']
['일론', '남', '1971년 6월 28일', '트위터']
['제프', '남', '1964년 1월 12일', '독서']
['리사', '여', '1969년 11월 7일', '게임']
['슬아', '여', '1983년 6월 16일', '쇼핑']
2행부터 7행의 데이터를 출력하는데 왜
for row in range(2,8): 로 하는 것이 맞는 것인지 궁금합니다.
답변 1
2
마지막 정수는 포함하지 않습니다. 2~7까지 포함하려면 range(2, 8)을 써야 합니다.
range(2, 8)
은 2 이상 8 미만의 정수라는 의미가 됩니다.
파이썬 문법이 그렇습니다^^; 파이썬 뿐만 아니라 자바나 C도 동일합니다.
(사실 저도 아직까지 헷갈리는 부분이기도 합니다.)
아, 그런 이유가 있었군요. 감사합니다!