DB연동과 정규식
DB연동
database
- 특정 다수의 이용자들에게 조직 내에서 필요로 하는 정보를 체계적으로 축적하는 저장소
- 이 저장소에 자주 쓰이는 언어로 sql이 있다.
import sqlalchemy
engine = sqlalchemy.create_engine('sqlite:///test.sqlite')
conn = engine.connect()
conn.execute("CREATE TABLE test (col1 text, col2 text)")
conn.execute("INSERT INTO test VALUES ('test1', 'test2')")
conn.execute('select + from test').fetchall()
conn.close()
정규식
- 특정한 규칙을 가진 문자의 집합을 표현할 떄 사용하는 언어
- 문자열에서 특정한 조건을 만족하는 경우를 걸러낼 때, 일반적인 조건문으로는 다소 복잡할 수도 있지만, 정규 표현식을 이용하면 매우 간단
- 파이썬에서만 쓰이는 것이 아닌 general한 방식의 언어이기 때문에 익혀 두면 다른 언어에도 도움이 됨
- 파이썬에서 정규식은 re모듈이 제공
- * : 0회 이상의 반복
- + : 최소 1회 이상의 반복
- ? : 0이나 1회 반복
- {m} : M회 반복을 허용
- {m,n} : M회부터 n회까지 반복허용
- . : 줄 바꿈 문자를 제외한 문자
- ^ : 문자열의 시작과 매칭
- $ : 끝나는 문자열
- [] : 문서 집합을 의미
- \ : 또는
- \d : 모든 숫자
- \D : 숫자가 아닌 문자
- \s : 화이트 스페이스(빈칸)와 매칭
- \S : 화이트 스페이스가 아닌 문자와 매칭
- \w : 숫자 또는 문자
- \W : 숫자 또는 문자가 아닌 것
import re
p = re.compile("[a-z]+")
m = p.search("5 python")
print(m.start() + m.end())
test = ['123','1241251','010-1234-5678','152515','126236-26362','2362362362']
for i in test:
tmp = i.split('-')
if len(tmp) != 3:
continue
tmp[0][0] == '0' or tmp[0][0] =='1' or tmp[0][0]
import re
data = """
park 010-1234-5678
kim 010-1111-2222"""
p = re.compile('(\w+)\s(\d+[-]\d+)[-](\d+)')
print(p.sub("\g<2>-**** \g<1>", data))
print('========================')
for i in data.split("\n"):
m = p.search(i)
if m != None:
print(m.group(2)+"-****"+" "+m.group(1))
import re
p = re.compile('[a-z]', re.I)
m = p.match('python')
print(m)
m = p.match("Python")
print(m)
m = p.match('PYTHON')
print(m)
import re
p = re.compile(r'[_a-zA-Z]\w*')
m = p.search('123 abc 123 def')
print(m.group())
m = p.findall('123 abc 123 def')
print(m)
p = re.compile('the')
print(p.findall('The cat was hungry,He was scared because of the cat'))
p = re.compile('the', re.I)
print(p.findall('The cat was hungry,He was scared because of the cat'))
import re
data = """
park 800905-1049118
kim 700905-1059119
"""
pat = re.compile("(\d{6})-(\d{7})")
print(pat.sub("\g<1>-*******",data))