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