Type Casting#
파이썬에서는 다양한 내장 함수를 사용하여 데이터 타입을 변환할 수 있다.
데이터 타입을 변환할 때에는
- 문자열을 숫자로 변환할 때는 해당 문자열이 유효한 숫자 형식이어야 한다.
- 실수를 정수로 변환할 때는 소수점 이하가 버려진다.
- 복잡한 데이터 구조(리스트, 딕셔너리 등)를 변환할 때는 주의가 필요하다.
등을 주의해야 한다.
정수로 변환 (int())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # 정수형 변환
float_num = 3.14
int_num = int(float_num) # 3 (소수점 이하 버림)
# 실수형 변환
a = float("10.5") # 문자열을 실수로
integer = 5
# 정수를 실수로
float_num = float(integer) # 5.0
b = float(10)
# 문자열을 숫자로 변환
str_num = "123"
number = int(str_num) # 123
float_num = float("3.14") # 3.14
# 진수 변환
binary_str = "1010"
decimal = int(binary_str, 2) # 10 (2진수를 10진수로)
hex_str = "1A"
decimal = int(hex_str, 16) # 26 (16진수를 10진수로)
|
문자열로 변환 (str())
1
2
3
4
5
6
7
8
9
| # 다양한 데이터 타입을 문자열로 변환
number_str = str(42) # "42"
float_str = str(3.14) # "3.14"
bool_str = str(True) # "True"
list_str = str([1, 2, 3]) # "[1, 2, 3]"
# 특수한 문자열 변환
ascii_char = chr(65) # "A" (ASCII 코드를 문자로)
ascii_code = ord('A') # 65 (문자를 ASCII 코드로)
|
컬렉션 타입 변환
1
2
3
4
5
6
7
8
9
10
11
| # 리스트 변환
tuple_data = (1, 2, 3)
list_data = list(tuple_data) # [1, 2, 3]
set_to_list = list({1, 2, 3}) # [1, 2, 3]
# 튜플 변환
list_data = [1, 2, 3]
tuple_data = tuple(list_data) # (1, 2, 3)
# 집합 변환
list_to_set = set([1, 2, 2, 3]) # {1, 2, 3} (중복 제거)
|
불리언으로 변환 (bool())
1
2
3
4
| p = bool(1) # 1은 True로 변환
q = bool(0) # 0은 False로 변환
print(p, type(p)) # True
print(q, type(q)) # False
|
문자열을 바이트 객체로 변환
encode()
메서드를 사용하여 문자열을 특정 인코딩의 바이트 객체로 변환할 수 있다.
1
2
3
| s = '안녕하세요'
b = s.encode('utf-8')
print(b) # 출력: b'\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94'
|
바이트 객체를 문자열로 변환
decode()
메서드를 사용하여 바이트 객체를 특정 인코딩의 문자열로 변환할 수 있다.
1
2
3
| b = b'\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94'
s = b.decode('utf-8')
print(s) # 출력: 안녕하세요
|
실제 활용 예제#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| def process_user_input(data):
"""사용자 입력 데이터를 처리하는 함수"""
# 데이터 타입 확인 및 적절한 처리
if isinstance(data, str):
# 문자열이 숫자를 포함하는지 확인
if data.isdigit():
return int(data) # 정수로 변환
elif data.replace(".", "", 1).isdigit():
return float(data) # 실수로 변환
else:
return data.strip() # 문자열 공백 제거
elif isinstance(data, (list, tuple)):
# 모든 요소를 문자열로 변환
return [str(item) for item in data]
elif isinstance(data, dict):
# 딕셔너리의 값들을 문자열로 변환
return {k: str(v) for k, v in data.items()}
else:
return str(data) # 기본적으로 문자열로 변환
# 함수 테스트
test_cases = [
"123",
"3.14",
" Hello ",
[1, 2, 3],
{"name": "김철수", "age": 25}
]
for test in test_cases:
result = process_user_input(test)
print(f"입력: {test} ({type(test)})")
print(f"출력: {result} ({type(result)})\n")
|
참고 및 출처#