Do it! 점프 투 파이썬
-
Chapter 07-3 강력한 정규 표현식의 세계로_2Do it! 점프 투 파이썬 2022. 6. 9. 20:23
전방 탐색 정규식에 막 입문한 사람들이 가장 어려워하는 것이 바로 전방 탐색(Lookahead Assertions)확장 구문이다. 정규식 안에 이 확장 구문을 사용하면 순식간에 암호문처럼 알아보기 어렵게 바뀌기 때문이다. 하지만 이 전방 탐색이 꼭 필요한 경우가 있으며 매우 유용한 경우도 많으니 꼭 알아 두자. 다음 예를 보자. >>> p = re.compile(".+:") >>> m = p.search("http://google.com") >>> print(m.group( )) http: 정규식 ".+:"과 일치하는 문자열로 http:를 돌려주었다. 만약 http:라는 검색 결과에서 :을 제외하고 출력하려면 어떻게 해야 할까? 위 예는 그나마 간단하지만 훨씬 복잡한 정규식이어서 그루핑은 추가로 할 수 ..
-
Chapter 07-3 강력한 정규 표현식의 세계로_1Do it! 점프 투 파이썬 2022. 6. 9. 19:40
이제 07-2에서 배우지 않은 몇몇 메타 문자의 의미를 살펴보고 그룹(Group)을 만드는 법, 전방 탐색 등 더욱 강력한 정규 표현식에 대해서 살펴보자. 메타 문자 아직 살펴보지 않은 메타 문자에 대해서 모두 살펴보자. 여기에서 다룰 메타 문자는 앞에서 살펴본 메타 문자와 성격이 조금 다르다. 앞에서 살펴본 +, *, [], {} 등의 메타문자는 매치가 진행될 때 현재 매치되고 있는 문자열의 위치가 변경된다.(보통 소비된다고 표현한다). 하지만 이와 달리 문자열을 소비시키지 않는 메타 문자도 있다. 이번에는 이런 문자열 소비가 없는 (zero-width assertions) 메타 문자에 대해 살펴 보자. | | 메타 문자는 or과 동일한 의미로 사용된다. A|B라는 정규식이 있다면 A 또는 B라는 의미..
-
Chapter 07-2 정규 표현식 시작하기_3Do it! 점프 투 파이썬 2022. 6. 9. 18:55
컴파일 옵션 정규식을 컴파일할 때 다음 옵션을 사용할 수 있다. 옵션 이름 약어 설명 DOTALL S dot 문자(.)가 줄바꿈 문자를 포함하여 모든 문자와 매치한다. IGNORECASE I 대.소문자에 관계 없이 매치한다. MULTILINE M 여러 줄과 매치한다. (^, $ 메타 문자의 사용과 관계가 있는 옵션이다.) VERBOSE X verbose 모드를 사용한다. (정규식을 보기 편하게 만들 수도 있고 주석 등을 사용할 수도 있다.) 옵션을 사용할 때는 re.DOTALL처럼 전체 옵션 이름을 써도 되고 re.S처럼 약어를 써도 된다. DOTALL, S . 메타 문자는 줄바꿈 문자(\N)를 제외한 모든 문자와 매치되는 규칙이 있다. 만약 \n 문자도 포함하여 매치하고 싶다면 re.DOTALL 또는 ..
-
Chapter 07-2 정규 표현식 시작하기_2Do it! 점프 투 파이썬 2022. 6. 9. 18:10
파이썬에서 정규 표현식을 지원하는 re 모듈 파이썬은 정규 표현식을 지원하기 위해 re(regular expression의 약어) 모듈을 제공한다. re 모듈은 파이썬을 설치할 때 자동으로 설치되는 기본 라이브러리로 사용 방법은 다음과 같다. >>> import re >>> p = re.compile('ab*') re.compile을 사용하여 정규 펴현식(위 예에서는 ab*)을 컴파일한다. re.compile의 결과로 돌려주는 객체 p(컴파일된 패턴 객체)를 사용하여 그 이후의 작업을 수행할 것이다. 정규식을 사용한 문자열 검색 이제 컴파일된 패턴 객체를 사용하여 문자열 검색을 수행해 보자. 컴파일된 패턴 객체는 다음과 같은 4가지 메서드를 제공한다. 메서드 목적 match() 문자열의 처음부터 정규식과..
-
Chapter 07-2 정규 표현식 시작하기_1Do it! 점프 투 파이썬 2022. 6. 9. 17:37
정규 표현식의 기초, 메타 문자 정규 표현식에서 사용하는 메타 문자(meta characters)에는 다음과 같은 것이 있다. . ^ $ * + ? { } [ ] \ | ( ) 정규 표현식에 위 메타 문자를 사용하면 특별한 의미를 갖게 된다. 자, 그러면 가장 간단한 정규 표현식부터 시작해 각 메타 문자의 의마와 사용법을 알아보자. 문자 클래스 [ ] 우리가 가장 먼저 살펴볼 메타 문자는 바로 문자 클래스(character class)인 [ ]이다. 문자 클래스로 만들어진 정규식은 '[ ] 사이의 문자들과 매치'라는 의미를 갖는다. 즉 정규 표현식이 [abc]라면 이 표현식의 의미는 'a, b, c 중 한 개의 문자와 매치'를 뜻한다. 이해를 돕기 위해 문자열 "a", "before", "dude"가 정..
-
Chapter 07-1 정규 표현식 알아보기Do it! 점프 투 파이썬 2022. 6. 9. 16:00
정규 표현식(Regular Expressions)은 복잡한 문자열을 처리할 때 사용하는 기법으로, 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 곳에서 사용한다. 정규 표현식을 배우는 것은 파이썬을 배우는 것과는 또 다른 영역의 과제이다. 정규 표현식은 왜 필요한가? 다음과 같은 문제가 주어졌다고 가정해 보자. 주민등록번호를 포함하고 있는 텍스트가 있다. 이 텍스트에 포함된 모든 주민등록번호의 뒷자리를 * 문자로 변경해 보자. 우선 정규식을 전혀 모르면 다음과 같은 순서로 프로그램을 작성해야 할 것이다. 전체 텍스트를 공백 문자로 나눈다(split). 나뉜 단어가 주민등록번호 형식인지 조사한다. 단어가 주민등록번호 형식이라면 뒷자리를 *로 변환한다. 나뉜 단어를 다시 조립한다. 이를 구현한 코드는..
-
Chapter 06-5~06-6Do it! 점프 투 파이썬 2022. 6. 9. 01:04
탭을 4개의 공백으로 바꾸기 이번에는 문서 파일을 읽어서 그 문서 파일 안에 있는 탭(tab)을 공백(space) 4개로 바꾸어 주는 스크립트를 작성해 보자. 필요한 기능은? 문서 파일 읽어 들이기, 문자열 변경하기 입력받는 값은? 탭을 포함한 문서 파일 출력하는 값은? 탭이 공백으로 수정된 문서 파일 다음과 같은 형식으로 프로그램이 수행되도록 만들 것이다. python tabto4.py src dst tabto4.py는 우리가 작성해야 할 파이썬 프로그램 이름이고 src는 탭을 포함하고 있는 원본 파일 이름이다. dst는 파일 안의 탭을 공백 4개로 변환한 결과를 저장할 파일 이름이다. 예를 들어 a.txt 파일에 있는 탭을 4개의 공백으로 바꾸어 b.txt 파일에 저장하고 싶다면 다음과 같이 수행해야..
-
Chapter 06-2~06-4Do it! 점프 투 파이썬 2022. 6. 8. 23:03
3과 5의 배수 합하기 자, 다음 문제를 어떻게 풀면 좋을지 생각해 보자. 10 미만의 자연수에서 3과 5의 배수를 구하면 3, 5, 6, 9이다. 이들의 총합은 23이다. 1000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구하라. 입력받는 값은? 1부터 999까지(1000 미만의 자연수) 출력하는 값은? 3의 배수와 5의 배수의 총합 생각해 볼 것은? 하나. 3의 배수와 5의 배수는 어떻게 찾지? 둘. 3의 배수와 5의 배수가 겹칠 때는 어떻게 하지? 이 문제를 풀기 위한 중요 포인트는 두 가지이다. 한 가지는 1000 미만의 자연수를 구하는 방법이고 또 다른 한 가지는 3과 5의 배수를 구하는 것이다. 이 두가지만 해결되면 문제는 쉽게 해결될 것으로 보인다. 1. 먼저 1000 미만의 자연수..