안녕하세요. 주피터 노트북으로 코드 작성하다가 에러가 떠서 해결방법을 묻고자 글 작성했습니다.
첫번째 셀은 잘 입력됐고 두번째 셀(데이터를 csv파일로 저장하기) 부분에서 인코드에러가 발생했습니다.
어떻게 해결해야 좋을지 의견을 구하고 싶습니다.
유니코드 인코딩과 관련된 문제로 보입니다.
import io
with io.open(fname, "w", encoding="utf-8") as f:
f.write(html)
이러한 해법을 발견했습니다.open 할 때 인코딩을 지정하는 방법으로 해결하는 것 같습니다.
조언해주신대로 넣어서 코드 작성해봤는데 이번에는 NameError가 떠서 다시 문의드립니다.
어느 부분에서 잘못 되었는지 확인해주시면 감사하겠습니다.
NameError는 해당 변수가 없을 때 발생합니다.
인용한 코드를 그대로 복붙한다고 될 리가 없습니다.
이해하고 직접 작성해야 합니다.
UNIT 6.2에 보면 NameError 예시가 있습니다.
>>> d += 10 # d는 만들지 않은 변수
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
d += 10
NameError: name 'd' is not defined[JL1]
왜냐하면 계산 결과를 d에 할당하기 전에 d와 10을 더해야 하는데 d라는 변수가 없어서 덧셈이 안 되기 때문입니다. 따라서 연산 후 할당을 하려면 값이 들어있는 변수를 사용해야 합니다.
fname을 사용한 적이 없고, 해당 변수가 없기 때문에 NameError가 발생합니다.
코드는 다시 작성해보겠습니다.
질문이 있는데 그럼 기존의 with open('weather.csv')로 시작하는 코드도 넣고 인코딩 코드인 import io로 시작하는 코드도 한 번에 다시 담겨야 하는 게 아닌가요?
다른 분의 실습을 참고해서 보다보니 관리자 님이 남겨주신 코드에서 변형을 좀 하면 답을 얻을 수 있다는 것을 알게 되었습니다.
제가 질문했던 기존 코드를 반복할 필요가 없다는 것도 알았습니다. 덕분에 잘 해결해서 다음 단계로 넘어갈 수 있게 되었습니다. 고맙습니다.