re
모듈을 import
해서 사용할 수 있습니다.#1단계 : "the"라는 패턴을 컴파일한 후 패턴 객체를 리턴합니다.
pattern = re.compile("the")
print(pattern)
#2단계 : 컴파일된 패턴 객체를 활용하여 다른 텍스트에서 검색을 수행합니다.
pt2 = pattern.findall('of the people, for the people, by the people')
print(pt2)
# match, group을 활용해 'My' 찾기
src = "My name is..."
regex = re.match("My", src)
print(regex)
if regex:
print(regex.group())
else:
print("No!")
# 실행 결과
<re.Match object; span=(0, 2), match='My'>
My
패턴은 정규 표현식을 더욱 강력하게 해주는 도구입니다. 특수문자 혹은 메타문자라 불리는 [] - . ? + {} /
등을 이용해 특수한 패턴을 만들어 이용할 수 있습니다.
아래는 다양한 패턴들의 예시입니다.
[ ]
: 문자-
: 범위.
: 하나의 문자?
: 0회 또는 1회 반복*
: 0회 이상 반복+
: 1회 이상 반복{m, n}
: m ~ n\d
: 숫자, [0-9]
와 동일\D
: 비 숫자, [^0-9
]와 동일\w
: 알파벳 문자 + 숫자 + _
, [a-zA-Z0-9_]
와 동일\W
: 비 알파벳 문자 + 비숫자, [^a-zA-Z0-9_]
와 동일\s
: 공백 문자, [ \t\n\r\f\v]
와 동일\S
: 비 공백 문자, [^ \t\n\r\f\v]
와 동일\b
: 단어 경계\B
: 비 단어 경계\t
: 가로 탭(tab)\v
: 세로 탭(vertical tab)\f
: 폼 피드\n
: 라인 피드(개행문자)\r
: 캐리지 리턴(원시 문자열)#- 전화번호(숫자, 기호)
phonenumber = re.compile(r'(\d{3}-){2}\d{4}')
phone = phonenumber.search('This is my phone number 010-111-1111')
if phone:
print(phone.group())
# 실행 결과
010-111-1111
#- 이메일(알파벳, 숫자, 기호)
text = "My e-mail adress is doingharu@naver.com, and tomorrow@naver.com"
pattern = re.compile("[0-9a-zA-Z]+@[0-9a-z]+\.[0-9a-z]+")
# 혹은 pattern = re.compile("\w+@\w+\.\w+") 이와 같이 작성해도 됩니다.
pattern.findall(text)
# 실행 결과
['doingharu@naver.com', 'tomorrow@naver.com']
import re
를 통해 정규식 모듈을 가져옵니다.re.compile()
함수로 regex 개체를 만듭니다.search()
, findall()
메서드로 전달합니다.# write
with open("hello.txt","w") as f:
#- open(파일명, 파일모드)
# read
with open("hello.txt", "r") as f:
print(f.read())
모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py
패키지(package) : 기능적으로 동일하거나 동일한 결과를 만드는 모듈들의 집합 또는 폴더. 종종 라이브러리라고도 불림
라이브러리(library) : 모듈과 패키지의 집합. 패키지보다 포괄적인 개념이나 패키지와 혼용되어 사용되기도 함.
sys.path
: 현재 폴더와 파이썬 모듈들이 저장되는 위치를 리스트 형태로 반환sys.path.append()
: 자신이 만든 모듈의 경로를 append 함수를 이용해서 추가함. 그 후 추가한 디렉터리에 있는 파이썬 모듈을 불러와 사용할 수 있다.os.chdir()
: 디렉터리 위치 변경 (change directory)os.getcwd()
: 현재 자신의 디렉터리 위치를 반환 (get current workding directory)os.mkdir()
: 디렉터리 생성os.rmdir()
: 디렉터리 삭제 (단, 디렉터리가 비어 있을 경우)glob.glob()
: 해당 경로 안의 디렉터리나 파일들을 리스트 형태로 반환os.path.join()
: 경로(path)를 병합하여 새 경로 생성os.listdir()
: 디렉터리 안의 파일 및 서브 디렉터리를 리스트 형태로 반환os.path.exists()
: 파일 혹은 디렉터리의 경로 존재 여부 확인os.path.isfile()
: 파일 경로의 존재 여부 확인os.path.isdir()
: 디렉터리 경로의 존재 여부 확인os.path.getsize()
: 파일의 크기 확인