파이썬에서 문자열을 실수 또는 정수로 변환하는 방법
파이썬에서 문자열을 숫자(실수 또는 정수)로 변환하는 것은 매우 흔한 작업입니다. 예를 들어, 사용자 입력을 받아 숫자 연산을 수행하거나, 외부 파일에서 숫자 데이터를 읽어올 때 이러한 변환이 필요합니다.
float() 함수 사용하여 실수로 변환
- 문법:
float(문자열)
- 설명: 주어진 문자열을 부동 소수점 숫자(실수)로 변환합니다.
- 예시:
number_string = "3.14"
number_float = float(number_string)
print(number_float) # 출력: 3.14
int() 함수 사용하여 정수로 변환
- 설명: 주어진 문자열을 정수로 변환합니다. 소수점 이하 자리는 버려집니다.
number_string = "42"
number_int = int(number_string)
print(number_int) # 출력: 42
주의사항
- 문자열 형식: 변환하려는 문자열은 숫자 형식으로 구성되어야 합니다. 문자나 특수 문자가 포함된 경우
ValueError
예외가 발생합니다. - 소수점:
float()
함수는 소수점을 포함한 숫자를 처리할 수 있지만,int()
함수는 소수점 이하를 버리고 정수 부분만 반환합니다. - 예외 처리: 잘못된 형식의 문자열이 입력될 경우
ValueError
예외가 발생할 수 있으므로 적절한 예외 처리를 해주는 것이 좋습니다.
예외 처리 예시
try:
number_string = input("숫자를 입력하세요: ")
number_float = float(number_string)
print("입력한 숫자는 실수입니다:", number_float)
except ValueError:
print("잘못된 형식의 입력입니다. 숫자를 입력하세요.")
추가 설명
- 다른 기수:
int()
함수는 두 번째 인수로 밑수를 지정하여 다른 진수의 문자열을 정수로 변환할 수 있습니다. 예를 들어,int("11", 2)
는 2진수 11을 10진수 3으로 변환합니다. - 파이썬의 숫자형: 파이썬에는 정수형(int), 부동 소수점형(float), 복소수형(complex) 등 다양한 숫자형이 있습니다. 필요에 따라 적절한 형을 선택하여 사용하면 됩니다.
파이썬에서 문자열을 숫자로 변환하는 다양한 예시
기본적인 예시
# 실수로 변환
string_num = "3.14159"
float_num = float(string_num)
print(float_num) # 출력: 3.14159
# 정수로 변환
string_num = "42"
int_num = int(string_num)
print(int_num) # 출력: 42
사용자 입력 받아 변환하기
user_input = input("숫자를 입력하세요: ")
try:
num = float(user_input)
print("입력하신 숫자는:", num)
except ValueError:
print("잘못된 입력입니다. 숫자를 입력하세요.")
리스트 내 문자열을 숫자로 변환하기
string_list = ["10", "20", "30"]
int_list = [int(x) for x in string_list]
print(int_list) # 출력: [10, 20, 30]
파일에서 숫자 읽어와 변환하기
with open("numbers.txt", "r") as f:
for line in f:
num = float(line.strip())
print(num)
다른 기수의 문자열 변환
# 2진수 문자열을 10진수 정수로 변환
binary_string = "101"
decimal_num = int(binary_string, 2)
print(decimal_num) # 출력: 5
예외 처리 심화
def safe_float(string):
try:
return float(string)
except ValueError:
print("숫자 형식이 아닙니다.")
return None
num = safe_float("3.14")
if num is not None:
print("숫자:", num)
추가 설명
float()
함수는 소수점이 포함된 숫자를,int()
함수는 정수를 변환합니다.try-except
블록을 사용하여 예외를 처리하면 프로그램이 비정상적으로 종료되는 것을 방지할 수 있습니다.- 리스트 컴프리헨션을 활용하면 간결하게 리스트 내의 모든 요소를 변환할 수 있습니다.
with open()
문맥 관리자를 사용하면 파일을 안전하게 열고 닫을 수 있습니다.int()
함수의 두 번째 인수는 밑수를 나타내며, 이를 이용하여 다양한 진수의 문자열을 변환할 수 있습니다.
위 예시들을 참고하여 자신에게 맞는 코드를 작성해 보세요.
특정 상황에 맞는 코드를 원하시면 다음과 같은 정보를 알려주세요.
- 변환하려는 데이터의 형식: 쉼표로 구분된 숫자, 특정 형식의 파일 등
- 예상되는 오류: 빈 문자열, 문자 포함된 문자열 등
- 추가적인 처리: 소수점 자릿수 제한, 특정 범위의 숫자만 허용 등
파이썬에서 문자열을 숫자로 변환하는 대체 방법
지금까지 float()
과 int()
함수를 이용하여 문자열을 숫자로 변환하는 방법을 알아보았습니다. 하지만 이 외에도 다양한 방법으로 문자열을 숫자로 변환할 수 있습니다.
eval() 함수 사용 (주의: 보안 문제 발생 가능)
- 설명: 문자열을 Python 표현식으로 평가합니다. 즉,
eval("3+4")
는 7을 반환합니다. - 문자열을 숫자로 변환하는 예시:
eval("3.14")
- 주의: 임의의 문자열을
eval()
함수에 직접 넣으면 악의적인 코드가 실행될 수 있는 보안 문제가 발생할 수 있습니다. 따라서 사용에 주의해야 합니다.
number_string = "3.14"
number_float = eval(number_string)
print(number_float) # 출력: 3.14
decimal 모듈 사용 (정밀한 소수점 연산 필요 시)
- 설명:
decimal
모듈은 부동 소수점 연산에서 발생할 수 있는 오차를 줄여주는 정밀한 소수점 연산을 위한 모듈입니다. - 문자열을
Decimal
객체로 변환:decimal.Decimal(문자열)
import decimal
number_string = "0.1"
decimal_num = decimal.Decimal(number_string)
print(decimal_num) # 출력: 0.1
문자열 처리 함수 활용 (복잡한 형식의 문자열 처리 시)
- 설명:
split()
,strip()
,replace()
등의 문자열 처리 함수를 이용하여 문자열을 원하는 형태로 가공한 후float()
이나int()
함수를 사용할 수 있습니다. - 예시: 쉼표가 포함된 숫자 문자열을 숫자 리스트로 변환
number_string = "1,2,3,4"
number_list = [float(x) for x in number_string.split(",")]
print(number_list) # 출력: [1.0, 2.0, 3.0, 4.0]
어떤 방법을 선택해야 할까요?
- 간단한 변환:
float()
또는int()
함수를 사용하는 것이 가장 일반적이고 간편합니다. - 정밀한 소수점 연산:
decimal
모듈을 사용합니다. - 복잡한 문자열 처리: 문자열 처리 함수와 함께
float()
또는int()
함수를 사용합니다. - 보안:
eval()
함수는 보안 문제의 위험이 있으므로 신중하게 사용해야 합니다.
각 상황에 맞는 적절한 방법을 선택하여 사용하시기 바랍니다.
- 어떤 종류의 문자열을 변환하려고 하시나요? (예: 쉼표로 구분된 숫자, scientific notation, 특수 문자 포함)
- 변환 후에 어떤 작업을 수행하고 싶으신가요? (예: 계산, 비교, 그래프 그리기)
- 어떤 부분에서 어려움을 겪고 계시나요?
python parsing floating-point