한글로 listener 질문
파이썬 초보자입니다.
타이핑을 하면 한글이 써지는 프로그램을 만들고 있습니다.
예를 들어 'ㅇ아안'이며 리스트에서 0과 1 요소를 제거해서 '안'의 결과만 뿌리게 하려고 합니다.
list assignment index out of range 에러가 뜹니다.
그리고 space바로 쓰지 않고 입력하는 방법이 있을까요?
고수분들의 조언을 기다립니다.
import sys
import os
sys.path.append(os.path.abspath("SO_site-packages"))
from pynput import keyboard
from hangul_utils import join_jamos
# 자음-초성/종성
cons = {'r':'ㄱ', 'R':'ㄲ', 's':'ㄴ', 'e':'ㄷ', 'E':'ㄸ', 'f':'ㄹ', 'a':'ㅁ', 'q':'ㅂ', 'Q':'ㅃ', 't':'ㅅ', 'T':'ㅆ',
'd':'ㅇ', 'w':'ㅈ', 'W':'ㅉ', 'c':'ㅊ', 'z':'ㅋ', 'x':'ㅌ', 'v':'ㅍ', 'g':'ㅎ'}
# 모음-중성
vowels = {'k':'ㅏ', 'o':'ㅐ', 'i':'ㅑ', 'O':'ㅒ', 'j':'ㅓ', 'p':'ㅔ', 'u':'ㅕ', 'P':'ㅖ', 'h':'ㅗ', 'hk':'ㅘ', 'ho':'ㅙ', 'hl':'ㅚ',
'y':'ㅛ', 'n':'ㅜ', 'nj':'ㅝ', 'np':'ㅞ', 'nl':'ㅟ', 'b':'ㅠ', 'm':'ㅡ', 'ml':'ㅢ', 'l':'ㅣ'}
# 자음-종성
cons_double = {'rt':'ㄳ', 'sw':'ㄵ', 'sg':'ㄶ', 'fr':'ㄺ', 'fa':'ㄻ', 'fq':'ㄼ', 'ft':'ㄽ', 'fx':'ㄾ', 'fv':'ㄿ', 'fg':'ㅀ', 'qt':'ㅄ'}
def engkor(text):
result = '' # 영 > 한 변환 결과
# 1. 해당 글자가 자음인지 모음인지 확인
vc = ''
for t in text:
if t in cons :
vc+='c'
elif t in vowels:
vc+='v'
else:
vc+='!'
# cvv → fVV / cv → fv / cc → dd
vc = vc.replace('cvv', 'fVV').replace('cv', 'fv').replace('cc', 'dd')
# 2. 자음 / 모음 / 두글자 자음 에서 검색
i = 0
while i < len(text):
v = vc[i]
t = text[i]
j = 1
# 한글일 경우
try:
if v == 'f' or v == 'c': # 초성(f) & 자음(c) = 자음
result+=cons[t]
elif v == 'V': # 더블 모음
result+=vowels[text[i:i+2]]
j+=1
elif v == 'v': # 모음
result+=vowels[t]
elif v == 'd': # 더블 자음
result+=cons_double[text[i:i+2]]
j+=1
else:
result+=t
# 한글이 아닐 경우
except:
if v in cons:
result+=cons[t]
elif v in vowels:
result+=vowels[t]
else:
result+=t
i += j
return join_jamos(result)
a = []
def on_press(key):
try:
a.append(key.char)
b = len(''.join(a))
print(engkor(''.join(a)), end='')
except AttributeError:
for i in range(0, b-1):
del a[i]
listener = keyboard.Listener(on_press=on_press)
listener.start() # 리스너 시작
listener.join()
mono 님 367
M 2021년 10월 22일 6:22 오후
해결 되셨나요? 저도 이문제 때문에 골치가 아프네용
-
ohinsu134님,
2022년 6월 2일 12:17 오전
추천
,
대댓글