본문 바로가기
SW 프로그래밍/파이썬

문자열을 숫자로 변환; 문자를 정수(int, long), 실수(float)로 바꾸기

by N2info 2019. 10. 24.

MySQL에서 데이터를 가져오면 대부분 문자이다.(varchar)

화면에는 숫자처럼 보이지만 실제는 문자열이다. 이를 통해 그래프를 그리거나 연산을 할수 없다.

간단히 숫자로 변환하는 방법이 있다.

#!/usr/bin/python
# -*- coding: cp949 -*-

# 이 파일의 맨 첫줄에 빈줄이 있으면
# SyntaxError: Non-UTF-8 code starting with '\xbc' in file example3.py on line 6,
# but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
# 이런 식의 에러가 납니다.


# "정수 문자열"을 정수로 만들어, 플러스 1 하기
s = "123"
n = int(s) + 1
print (n)      # 출력 결과: 124
# 주의: 파이썬 3에서는 print 가 함수이므로 print() 형식이어야 에러가 안 남



# "실수 문자열"을 실수로 만들어, 플러스 1 하기
s = "123.456"
n = float(s) + 1
print (n)      # 출력 결과: 124.456
# int() 로 하면 에러 남: ValueError: invalid literal for int() with base 10: '123.456'




# "long형 문자열"을 long형 정수로 만들어, 플러스 1 하기
# 주의!!: 파이썬 3에서는 long 의 이름이 int로 변경되었음
#
s = "999999999999999999999999999999999999999999999"
n = int(s) + 1
print (n)      # 출력 결과: 100000000000000

한편 숫자를 문자로 변환할수 있는데 다음과 같다.

#!/usr/bin/python
# -*- coding: cp949 -*-

# 내장함수인 str() 함수로
n = 123.456
s = str(n)
print s + "ABC"    # 출력 결과: 123.456ABC

# 키보드 맨 좌측 상단의 Backtick(Backquote:`) 문자로
# 주의! 작은따옴표(홑따옴표)가 아님
n = 123
s = `n`
print s + "ABC"    # 출력 결과: 123ABC

# C의 sprintf() 함수 스타일의 형식 지정자로
n = 100
s = "%d" % (n)
print s + "ABC"    # 출력 결과: 100ABC

또, 문자인지 숫자인지 확인하는 방법은

#!/usr/bin/python
# -*- coding: cp949 -*-

def isNumber(s):
  try:
    float(s)
    return True
  except ValueError:
    return False

print isNumber("123");
# 출력 결과: True

print isNumber("123.0");
# 출력 결과: True

print isNumber("+.5");
# 출력 결과: True

print isNumber(123);
# 출력 결과: True

print isNumber("123ZZZ");
# 출력 결과: False

print isNumber("0xFF");
# 출력 결과: False         # 16진수 문자열은 인식 못함. 다만, 16진수 숫자는 됨

print isNumber('');        # 빈 문자열
# 출력 결과: False

print isNumber('     ');   # 공백 문자
# 출력 결과: False

출처 : http://mwultong.blogspot.com