Recent Posts
Recent Comments
에르노트
파이썬 문자 유니코드 변환 (ord 함수, chr 함수) 본문
좌표를 계산해야 할 때 (1,1)이라고 주어지면 깔끔하다. 그냥 그대로 사용하면 된다. x축으로 한칸 이동했을 때 (2,1)이다.
하지만 (A,1)이라고 주어질 수도 있다. 그러면 x축으로 한칸 이동했을 때 (B,1)로 옮겨주어야 한다. [A,B,C...] 형태로 좌표 배열을 만들어두고 인덱스를 옮겨다닐 수도 있겠지만 비효율적이고 또 불편하다. 그래서 (A, 1)이라고 입력이 들어오더라도 (1,1)로 변환할 수 있다면 문제가 좀 더 쉬워진다.
다행히 파이썬에서는 내장 함수 ord()를 이용하여 간단하게 문자를 유니코드 정수로 변환할 수 있다.
ord('A') == 65
ord('B') == 66
ord('C') == 67
반대로 내장 함수 chr()를 이용하여 유니코드 정수를 받아서 문자를 반환할 수도 있다.
chr(65) == 'A'
chr(66) == 'B'
chr(67) == 'C'
응용 예시
먼저 a:1, b:2... 와 같이 매핑하고 싶을 때 직접 딕셔너리에 정의할 수 있다.
def char_to_num(char):
x_map = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7,
'h': 8,
}
return int(x_map[char])
데이터가 적을 때는 충분히 유용한 방식이지만 데이터가 많아지면 감당하기 힘들다. 게다가 하드코딩 스타일이라 지저분하고 번거롭다는 단점이 있다.
def char_to_num(char):
return int(ord(char)) - int(ord('a')) + 1
그래서 어차피 'a'가 기준이라면 주어진 문자와 'a' 사이의 유니코드 값 차이를 이용해서 원하는 값을 얻어낼 수 있다. ord() 함수를 활용하면 문자와 유니코드 사이에 변환이 매우 간단하므로 전체적인 코드도 훨씬 짧아진다.
'Dev > Python' 카테고리의 다른 글
파이썬 리스트 컴프리헨션 (List Comprehension) (0) | 2021.11.12 |
---|---|
파이썬 재귀 깊이 제한 해제 (sys.setrecursionlimit()) (0) | 2021.11.02 |
파이썬 self (takes 0 positional arguments but 1 was given FIX) (2) | 2021.07.31 |
파이썬 논리 연산자 - and, or, not (2) | 2021.07.24 |
Comments