-
Error py-hanspell KeyError 에러 코드와 해결 방법DEV/python 2023. 12. 20. 10:29
사용자 환경 : M1 Mac
에러가 발생한 설치 패키지 :
pip install git+https://github.com/ssut/py-hanspell.git
에러코드 :
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) Cell In[1], line 4 1 from hanspell import spell_checker 3 sent = "맞춤법 틀리면 외 않되? 쓰고싶은대로쓰면돼지 " ----> 4 spelled_sent = spell_checker.check(sent) 6 hanspell_sent = spelled_sent.checked 7 print(hanspell_sent) File ~/anaconda3/envs/dev-sample/lib/python3.10/site-packages/hanspell/spell_checker.py:62, in check(text) 59 passed_time = time.time() - start_time 61 data = json.loads(r.text) ---> 62 html = data['message']['result']['html'] 63 result = { 64 'result': True, 65 'original': text, (...) 69 'words': OrderedDict(), 70 } 72 # 띄어쓰기로 구분하기 위해 태그는 일단 보기 쉽게 바꿔둠. 73 # ElementTree의 iter()를 써서 더 좋게 할 수 있는 방법이 있지만 74 # 이 짧은 코드에 굳이 그렇게 할 필요성이 없으므로 일단 문자열을 치환하는 방법으로 작성. KeyError: 'result'
해결방법 1 :
2023/12/20 기준 내가 수정한 코드로 실행해 본 결과 실행이 잘 되는 것을 확인하였다.
기존 py-hansepll을 제거하고 새로 받아보도록 하자.
// 기존 py-hanspell(hanspell) 제거 pip uninstall py-hanspell // 수정된 코드 다운로드 pip install git+https://github.com/Seokhyeon-Park/hanspell.git
jupyter notebook을 사용한다던가 터미널에서 진행 중이라면 종료 후 재실행하고 확인하자.
만약 위 코드가 막혔다면 직접 수정하는 방법이 존재한다.
(뭔가 주기적으로 막을 것 같은 느낌, 해결방법 2를 참고하자)
물론 해당 방법도 2023/12/20일 기준임을 참고하자.
해결방법 2 :
우선 오리지널 코드 기준으로 수정하는 방법을 설명한다.
물론 위 수정된 코드에서 수정해도 된다.
(아마 pip에서 오리지널 패키지로 찾으려면 "py-hanspell", 수정한 패키지는 "hanspell"로 검색될 것이다. 혼동하지 말자.)
우선 네이버 맞춤법검사기를 들어가서 개발자 도구를 켜준다.
개발자 도구는 웹 사이트에서 [우클릭] -> [검사] 혹은 [F12]를 누르면 된다.
그 다음 아무 값이나 입력 후 검사하기를 누른다.
기존 코드에서는 message -> result -> html을 찾아서 사용했다.
오브젝트 내의 html이 notag_html로 변경된 듯 보인다.
해당 Payload를 뜯어보자
여기서 _callback을 빼고 패키지에 모두 옮겨주면 된다.
패키지 경로는 하단 명령어로 확인 가능하다.
pip show hanspell // 또는 pip show py-hanspell
해당 경로에서 패키지 폴더로 들어가서 "spell_checker.py"를 열어서 코드를 수정하자.
spell_checker.py 코드수정 1
// 코드 중간 payload 부분을 본인이 "확인한" 값으로 수정하자. // 하단 값은 2023/12/20일 내가 직접 브라우저에서 확인한 값으로 예시 코드이다. payload = { 'passportKey': 'c384b2ff8b3456f9338af70b63f1e611131353bf', 'where': 'nexearch', 'color_blindness': 0, '_': 1702974192406, 'q': text }
spell_checker.py 코드수정 2
data = json.loads(r.text) // 코드 중간에 html = data['message']['result']['html'] 부분의 "html"을 "notag_html"로 변경하자 // 만약 reponse 값이 달라졌다면 해당 값에 맞춰서 수정하면 될 것이다. html = data['message']['result']['notag_html'] result = { 'result': True, 'original': text, 'checked': _remove_tags(html), 'errors': data['message']['result']['errata_count'], 'time': passed_time, 'words': OrderedDict(), }
'DEV > python' 카테고리의 다른 글
Conda/Pytorch 설치 (Winodws) (2) 2024.04.28 Conda CondaError: Run 'conda init' (Windows) (0) 2024.04.28 Error `import pandas_profiling` is going to be deprecated by April 1st. Please use `import ydata_profiling` instead. (0) 2023.12.18 M1/M2 Silicon Mac conda KoNLPy lxml 다운로드 에러 (0) 2023.12.18 Anaconda Jupyter Notebook 아나콘다 가상환경에서 설치 및 실행방법 (0) 2023.12.18