Python 복습 (7) : 유니코드, 문자(열) 비교연산, .join()

STUDY_J·2024년 7월 14일

1) 유니코드

유니코드란?

  • 유니코드는 전 세계의 모든 문자를 일관되게 표현하기 위해 설계된 문자 인코딩 표준입니다.
    각 문자는 고유한 코드 포인트를 가지며, 이를 통해 텍스트를 일관되게 처리하고 교환할 수 있습니다.

  • 유니코드 예시 코드
    파이썬에서는 ord() 함수와 chr() 함수를 사용하여 문자의 유니코드 코드 포인트를 얻거나, 코드 포인트로부터 문자를 얻을 수 있습니다.

1-1) ord() 함수

ord() 함수는 "단일 문자"를 인자로 받아, 해당 문자의 유니코드 코드 포인트를 반환합니다.
인자로 들어오는 값은 반드시 "단일 문자 문자열"이어야 합니다.

# 올바른 사용 예
print(ord('a'))  # 97
print(ord('A'))  # 65

# 잘못된 사용 예 (여러 문자 또는 빈 문자열을 인자로 전달)
# print(ord('ab'))  # TypeError: ord() expected a character, but string of length 2 found
# print(ord(''))    # TypeError: ord() expected a character, but string of length 0 found

1-2) chr() 함수

chr() 함수는 유니코드 코드 포인트(정수)를 인자로 받아, 해당 코드 포인트에 대응하는 문자를 반환합니다.
인자로 들어오는 값은 "정수형"이어야 합니다.

# 올바른 사용 예
print(chr(97))  # 'a'
print(chr(65))  # 'A'

# 잘못된 사용 예 (정수가 아닌 값을 인자로 전달)
# print(chr('97'))  
# TypeError: 'str' object cannot be interpreted as an integer

# print(chr(97.0))  
# TypeError: 'float' object cannot be interpreted as an integer

1-3) 예제 문제

Hello Python 문자열의 각 문자의 유니코드 코드 포인트를 출력

s = 'Hello Python'
s_list = []

for i in s:
    s_list.append(ord(i))

print(s_list)
# [72, 101, 108, 108, 111, 32, 80, 121, 116, 104, 111, 110]

num_list = []
for j in s_list:
    num_list.append(chr(j))

print(num_list)
# ['H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n']

# join() 메서드 알아보기 => .join()은 리스트만 사용가능함.
print(''.join(num_list)) # Hello Python

문자열을 반복문을 사용하여 각 문자를 리스트에 추가해주고, 추가된 문자를 ord()함수를 사용해 숫자로 변환한다

숫자로 변환된 유니코드 값을 문자로 다시 표현하기

2) .join() 메소드

join() 메서드는 파이썬의 문자열 메서드 중 하나로, " 리스트의 문자열 요소 " 들을 하나의 문자열로 합칠 때 사용됩니다. join() 메서드는 문자열을 결합하는 데 사용되며, 각 요소 사이에 특정 구분자를 삽입할 수 있습니다.

2-1) 예시

words = ["Hello", "Python", "World"]
sentence = " ".join(words)
print(sentence)  # 출력: Hello Python World

sentence = "-".join(words)
print(sentence)  # 출력: Hello-Python-World


letters = ["H", "e", "l", "l", "o"]
word = "".join(letters)
print(word)  # 출력: Hello

2-2) 주의사항

1) join() 메서드는 문자열로 구성된 반복 가능한 객체에서만 사용할 수 있습니다.
즉, 리스트의 "모든 요소가 문자열" 이어야 합니다.
2) 리스트나 튜플 등의 요소가 "문자열이 아닌 경우", join() 메서드를 사용할 수 없습니다.
이 경우, 요소를 문자열로 변환한 후에 join() 메서드를 사용해야 합니다.

3) 문자열 비교 연산

파이썬에서는 문자열을 비교할 수 있습니다.
문자열 비교는 유니코드 값에 따라 이루어지며, 사전 순서(lexicographical order)를 따릅니다. 예를 들어, 'a'와 'b'를 비교할 때 'a'의 유니코드 값은 97, 'b'의 유니코드 값은 98이므로 'a'는 'b'보다 작다고 평가됩니다.

3-1) 예시코드

# 문자열 비교 예시
print('a' > 'b')  # False
print('a' < 'b')  # True
print('A' < 'a')  # True (65 < 97)
print('apple' > 'banana')  # False (첫 글자 'a'와 'b'를 비교)
print('apple' < 'banana')  # True

0개의 댓글