4. https://core.today
4
목차
1. 정규표현식으로 패턴 대조하기
2. 파일 읽고 쓰기
3. 파일 체계화하기
4. 웹 스크랩
5. 엑셀 스프레드시트로 작업하기
6. PDF 및 Word 문서로 작업하기
7. CSV 파일 및 JSON 데이터로 작업하기
8. 시간 관리, 작업 예약 그리고 다른 프로그램 실행
9. 이메일 및 문자 메시지 보내기
6. https://core.today
6
정규표현식으로 패턴 대조하기
• 정규표현식 없이 텍스트 패턴 찾기
• 정규표현식으로 텍스트 패턴 찾기
• 정규식 객체 만들기
• 원시 문자열을 re.compile()에 전달하기
• Regex 객체 대조
• 정규표현식을 사용한 더 많은 패턴 대조
• 괄호로 묶기
• 파이프로 여러 그룹 대조하기
• 물음표와 선택적 대조
• 별표로 0개 또는 그 이상과 일치시키기
• 더하기 기호로 하나 또는 그 이상과 일치시키기
• 중괄호로 특정 횟수 반복 일치시키기
• 최대 일치와 최소 일치
• findall() 메소드
• 문자 클래스
• 사용자 정의 문자 클래스 만들기
• 캐럿 및 달러 기호 글자
• 와일드카드 문자
• 점-별표로 모든 것을 일치시키기
• 점 문자로 줄바꿈 문자와 일치시키기
• 정규식 기호 복습하기
• 대소문자를 구분하지 않고 일치시키기
• sub() 메소드로 문자열 대체하기
• 복잡한 정규표현식 관리하기
• IGNORECASE, re.DOTALL, re.VERBOSE 결합하기
• 프로젝트 : 전화번호와 이메일 주소 추출하기
1단계 : 전화번호에 대한 정규식 만들기
2단계 : 이메일 주소에 대한 정규식 만들기
3단계 : 클립보드 텍스트에서 일치하는 모든 것을 찾기
4단계 : 일치하는 텍스트들을 하나의 문자열로 클립보드에 붙이기
12. https://core.today
12
원시 문자열을 re.compile()에 전달하기
Remember that escape characters in Python use the backslash () . The string value 'n' represents a single newline character, not a backslash followed by a lowercase n . You
need to enter the escape character to print a single backslash . So 'n' is the string that represents a backslash followed by a lowercase n . However, by putting an r before the
fi
rst quote of the string value, you can mark the string as a raw string, which does not escape characters .
Since regular expressions frequently use backslashes in them, it is convenient to pass raw strings to the re.compile() function instead of typing extra backslashes . Typing
r'ddd-ddd-dddd' is much easier than typing 'ddd-ddd-dddd' .
13. https://core.today
13
Regex 객체 대조
• Regex 객체의 search() 메소드는 전달되는 문자열이 정규식과 일치하는지 검색함.
• 정규식 패턴이 문자열에서 발견되지 않는다면 None을 반환함.
• 패턴이 발견되면, search() 메소드는 Match 객체를 반환함.
• Match 객체는 검색 문자열에서 실제 일치하는 텍스트를 반환하는 group() 메소드를 가짐.
14. https://core.today
14
정리
1. import re 로 정규식 모듈을 가져옴.
2. Re.compile() 함수로 Regex 개체를 만듬.
3. 검색할 문자열을 Regex 객체의 search() 메소드로 전달함.
이렇게 하면 Match 객체를 돌려 받음.
4. Match 객체의 group() 메소드를 호출해서 실제 일치하는 텍스트 문자열을 돌려받음.
25. https://core.today
25
중괄호로 특정 횟수 반복 일치시키기
• 중괄호의 첫 번째, 두 번째 번호를 한꺼번에 써서 최소값과 최대값을 지정할 수 있음.
• 중괄호의 첫 번째 또는 두 번째 번호를 비워서 최소값 또는 최대값을 비울 수 있음.
(Ha){3,
}
(Ha) Ӓܛ ࣁ ߣ ࢚ աఋաݶ ੌ
(Ha){, 5
}
(Ha) Ӓܛ 0ߣীࢲ 5ߣ աఋաݶ ੌ
26. https://core.today
26
최대 일치와 최소 일치
• 파이썬의 정규 표현식은 기본적으로 최대 일치임.
모호한 상황에서는 가능한 가장 긴 문자열과 일치함.
• 가장 짧은 문자열과 일치하기 위해서는 중괄호 뒤에 물음표를 위치시킴.
33. https://core.today
33
사용자 정의 문자 클래스 만들기
• 대괄호를 사용하면 사용자 정의 문자 클래스를 정의할 수 있음.
• 하이픈을 사용하면 문자 또는 숫자의 범위를 포함할 수 있음.
[a-zA-Z0-9] : ࣗޙ, ޙ, ं৬ ੌ
55. https://core.today
55
윈도우에서는 백슬래시, OS X 및 리눅스에서는 슬래시
• 윈도우 경로는 폴더 이름 사이의 구분 기호로 백슬래시를 사용함.
• 맥, 리눅스는 경로 구분 기호로 슬래시를 사용함.
• os.path.join() 으로 OS에 맞는 경로 값을 출력함.
137. https://core.today
137
정리
1. openpyxl 모듈을 import 함.
2. openpyxl.load_workbook() 함수를 호출함.
3. Workbook 객체를 가져옴.
4. 통합 문서의 get_active_sheet() 또는 get_sheet_by_name() 메소드 호출.
5. Worksheet 객체를 가져옴.
6. 인덱스를 사용하거나 cell() 시트 메소드를 row와 column 키워드 매개변수와 함께 사용.
7. Cell 객체를 가져옴.
8. Cell 객체의 value 속성을 읽음.
138. https://core.today
138
프로젝트 : 스프레드시트에서 데이터 읽기
• 2010년 미국 인구조사 데이터
• 각 County의 총 인구와
인구조사 지역 단위(census tract)의
수를 모두 계산하시오.
• 인구조사 지역 단위란
인구조사 목적으로만 정의된
지리적 영역을 말함.
143. https://core.today
143
프로젝트 : 스프레드시트에서 데이터 읽기
3단계 : 결과를 파일로 만들기
• pprint.pformat() 함수는 그 자체로 유효한 파이썬 코드 형식을 가지는 문자열을 만듬.
• countyData 딕셔너리를 하나의 거대한 문자열로, 파일에 저장함.
145. https://core.today
145
프로젝트 : 스프레드시트 업데이트하기
• 마늘, 샐러리, 레몬의 가격이 잘못 입력되었음.
• 스프레드시트 내의 수천 행 중, 마늘, 샐러리, 레몬 판매 행의 파운드 당 가격을 업데이트 할 것.
ࣻ оѺ
Celery 1.19
Garlic 3.07
Lemon 1.27
150. https://core.today
150
문제를 안고 있는 PDF 형식
• PDF 파일은 사람들이 쉽게 읽고 인쇄하도록 텍스트의 레이아웃을 만드는 데에 훌륭함.
• 소프트웨어가 그 내용을 일반 텍스트로 해석하기는 간단하지 않음.
• PyPDF2는 PDF에서 텍스트를 추출할 때 실수할 수 있으며,
일부 PDF는 아예 열지 못할 수 있음.
• OCR 등 특수한 절차를 거쳐야 할 수 있음.
153. https://core.today
153
PDF 파일 만들기
• PyPDF2는 일반 텍스트 파일과는 다르게, 아무 텍스트나 PDF에 쓸 수는 없음.
• 할 수 있는 기능
1. 다른 PDF로부터 페이지 복사하기
2. 페이지 회전하기
3. 페이지 덮어쓰기
4. 파일 암호화
159. https://core.today
159
프로젝트 : 많은 PDF 파일로부터 지정한 페이지를 결합하기
수십 개의 PDF 파일을 하나의 PDF로 합쳐라.
파일 각각은 첫 페이지에 표지가 있지만 최종 결과물에서는 표지가 되풀이해서 나타나면 안됨.
• 현재 작업 디렉토리에 있는 모든 PDF 파일을 찾음.
• PDF 파일이 순서에 따라 추가되도록 파일 이름을 정렬함.
• 출력 PDF 파일에 각 파일의 첫 번째 페이지를 제외한 나머지 페이지를 하나하나 기록함.
177. https://core.today
177
프로젝트 : 현재 날씨 정보 가져오기
1. 명령행에서 요청된 위치를 읽음.
2. OpenWeatherMap.org에서 JSON 날씨 데이터를 다운로드 함.
3. JSON 데이터의 문자열을 파이썬 데이터 구조로 변환함.
4. 오늘 날씨와 앞으로 이틀간의 날씨를 출력함.
derano9227@gridmire.com
9aa0693999d7837400eac58
ff
44c8b75
fc4928d6fa26cee176d5156c8df33d52
http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=fc4928d6fa26cee176d5156c8df33d52
214. https://core.today
214
지메일의 응용프로그램 특정 암호
https://support.google.com/accounts/answer/185833?hl=ko#zippy=%2C%EC%95%B1-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EA%B0%80-
%ED%95%84%EC%9A%94%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%9D%B4%EC%9C%A0%2Cmicrosoft-outlook-%EB%AC%B8%EC%A0%9C-
%ED%95%B4%EA%B2%B0
229. https://core.today
229
프로젝트 : 회원에게 회비 납부 알림 메일 보내기
자원봉사 클럽의 회원 회비를 “자원봉사”로 담당하게 됨.
모든 회원의 매달 회비 납부 상황을 스프레드시트로 가지고 있다가
회비를 내지 않은 사람에게 이메일을 보내야 함.
• 엑셀 스프레드시트에서 데이터를 읽음.
• 지난 달에 월 회비를 지불하지 않은 모든 회원을 찾음.
• 이메일 주소를 찾아 맞춤 알림 이메일을 보냄.