'Python'에 해당되는 글 1건

  1. 2020.05.27 [Python] Check Validation

[Python] Check Validation

Python 2020. 5. 27. 23:23

변수에 대한 유효성 검증은 어떤 개발 언어에서든 동일한 방식으로 구현된다.

 

나의 경우 Library 형태의 함수화하는 걸 즐기는 편이라 여러가지 형태의 변수값 유효성 체크 함수들을

하나의 파일에 모아두고 import하여 사용한다. 

 

 

1. 일반 문자열

  • 조건 : Length

  모든 값들을 Database에 저장한다면 해당 값에 대한 MAX 값이 존재할 것이다. 

  입력한 문자열의 길이가 Database에 할당된 저장 공간보다 크다면 INSERT 작업이 실패날 것이다.

def check_String_Length(min, max, value):
    if len(value) > max or llen(value) < min :
    	return False
    else:
    	return True

2. 숫자 문자열

  • 조건 : Is Decimal?, Range

  숫자로 된 문자열이니 숫자만 입력가능하여야 하며, 숫자이므로 입력 범위가 필요하다.

  예를들면, PORT 번호 같은 경우이다. PORT는 WELL-KNOWN PORT를 제외하고 1024~65535까지 사용가능 하다.

def check_Decimal_And_Range(min, max, value):
    if value.isdecimal() == False:
        return False
     
    if int(value) > max or int(value) < min :
        return False
    else:
        return True

 3. 나열값 (ENUM)

  • 조건 : Length, Range

  ENUM값은 GUI에서는 Select 박스로 구현하면 참 간단하고 쉽다.

  CUI에서는 ENUM List를 별도로(환경설정파일) 관리하여 사용하면 추가/삭제도 편리하다.

enum_list = ['ORACLE', 'MYSQL', 'MSSQL', 'MARIADB', 'DB2']

def check_Enum(enum_list, value):
    if value not in enum_list:
        return False
    else:
        return True

 4. IP Address

 

  입력된 값이 IP 주소 형태인지 확인하는 가장 간단한 법은 Python에서 제공하는 ipaddress 모듈을 사용하는 것이다.

  복잡하게 정규식을 사용하지 않아도 IPv4/IPv6 모두 간단히 확인 가능하다.

import ipaddress

def check_Ip_Address(value, log):
    try:
        ip = ipaddress.ip_address(value) # just ask!!
        log.debug("[{}] is IP{} Address.".format(ip, ip.version))
        return True
    except ValueError:
        return False

5. E-mail Address

 

  SI 사업을 진행하다보니 사용자 정보를 관리해야하는 경우가 발생하여 E-MAIL 주소를 입력받는 경우가 있었다.

  E-MAIL 주소형태는 간단한 정규식으로 가능하다. (구글링하면 많이 나온다..)

import re

def check_Email_Address(value):
    email = re.compile(r'''(
                    ([a-zA-Z0-9._%+-]+)                  # 이메일의 @ 앞부분
                    @
                    ([a-zA-Z0-9.-]+)                     # 이메일의 @ 뒷부분
                    (\.[a-zA-Z]{2,4}))'''. re.VERBOSE)   
    result = email.match(value)
    if result is None:
        return False
    else:
        return True

 

또 뭐가 있을까...

필요할 때마다 만들어서 계속 추가해야겠다.

Posted by [ 브랜든 ]
,