<1-7> 정규표현식 with Python
Language/Python2018. 2. 3. 14:54
### Day_01_05_re.py
동영상 강의 : http://pythonkim.tistory.com/notice/77
- import re 를 해주어야 한다.
- Google 에서 "3412 bob 123" 검색
>> http://www.linuxfocus.org/Korean/July1998/article53.html 에서 db 데이터 가져올 수 있음.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import re db = '''3412 Bob 123 3834 Jonny 333 1248 Kate 634 1423 Tony 567 2567 Peter 435 3567 Alice 535 1548 Kerry 534''' print(db) # 3412 Bob 123 # 3834 Jonny 333 # 1248 Kate 634 # 1423 Tony 567 # 2567 Peter 435 # 3567 Alice 535 # 1548 Kerry 534 ns = re.findall(r'[0-9]', db) # 숫자 print(ns) # ['3', '4', '1', '2', '1', '2', '3', '3', '8', '3', '4', '3', '3', '3', '1', '2', '4', '8', '6', '3', '4', '1', '4', '2', '3', '5', '6', '7', '2', '5', '6', '7', '4', '3', '5', '3', '5', '6', '7', '5', '3', '5', '1', '5', '4', '8', '5', '3', '4'] ns = re.findall(r'[0-9]+', db) # 숫자 한개 이상 print(ns) # ['3412', '123', '3834', '333', '1248', '634', '1423', '567', '2567', '435', '3567', '535', '1548', '534'] | cs |
# 문제
# 이름만 찾아보기
1 2 3 4 5 6 7 | # 문제 # 이름만 찾아보기 # names = re.findall(r'[a-zA-Z]+', db) names = re.findall(r'[A-Z][a-z]+', db) # 처음 대문자 한글자 + 소문자 한개 이상. print(names) # ['Bob', 'Jonny', 'Kate', 'Tony', 'Peter', 'Alice', 'Kerry'] | cs |
>> [A-Za-z]+ 와 [A-Z][a-z]+ 는 다르다..!!
# 문제
# T로 시작하는 이름
# T로 시작하지 않는 이름
1 2 3 4 5 6 7 8 9 10 11 12 | # 문제 # T로 시작하는 이름 # T로 시작하지 않는 이름 Tname = re.findall(r'T[a-z]+', db) print(Tname) # ['Tony'] nTname = re.findall(r'[^T][a-z]+', db) # bug print(nTname) # ['Bob', 'Jonny', 'Kate', 'ony', 'Peter', 'Alice', 'Kerry'] nTname = re.findall(r'[A-SU-Z][a-z]+', db) print(nTname) # ['Bob', 'Jonny', 'Kate', 'Peter', 'Alice', 'Kerry'] | cs |
>> T로 시작하지 않는 단어 중 [^T][a-z] 로 했을 때 문제가 있었다.
>> 바로 'ony' 라는 단어까지 검색이 되어버렸다.
# raw string
r'string' : raw
- 파이썬에서 사용하는 문자열로 일반 문자열과 충돌을 막기 위해 제공하는 것 같다 .
- 정규표현식 외에 쓸일은 없다고 한다.
'Language > Python' 카테고리의 다른 글
<2-2> 리스트, 튜플 (0) | 2018.02.15 |
---|---|
<2-1> 제어문과 반복문의 연결고리 (0) | 2018.02.06 |
<1-6> 정규표현식 (Regular Expression) (0) | 2018.02.02 |
<1-5> 함수(function) (0) | 2018.02.01 |
<1-4> 제어문(if) (0) | 2018.01.31 |