Day11 파이썬 연구 노트 및주의의 요점

14. 정규 표현식

14.1. 개요

14.1.1. 개념

  • 정규 표현식
  • 일치시킬 하나 이상의 텍스트 검색 문자열을 설명하는 텍스트 모드,

14.1.2. 전형적인 장면

  • 데이터 유효성 검사
  • 텍스트 검색
  • 텍스트 추출
  • 텍스트 교체
  • 텍스트 분할

14.1.3 구문

  • 리터럴

• 일반 문자

탈출 할 필요가 •

• \

• ^

• $

•.

• |

•?

• *

• +

• ()

• []

• {}

  • 메타 문자

14.1.4 매칭

  • 단어, 미리 정의 된 메타 문자

•.의 \ n을 제외한 모든 문자

행 • \ D 디지털 등가 [0-9]

• \ D 디지털 수수료 당량 [^ 0-9]

• \ S 공백 문자 \ t \ n \ 연구 \ F \ V

• \ S 비 공백 문자 [^ \ t \ n \ R \ F \ V]

• \ 영숫자 w [A-ZA-Z0-9_]

• \ W 영숫자가 아닌 문자 [^ A-ZA-Z0-9_]

  • 배치 옵션

• | 없음 | 예

  • 정량 (방법 문자, 메타 문자, 문자의 반복)

•? 0 또는 1

• * 0 번 이상

• + 1 번 이상

• 특정

• {N, m} 순서 범위

• {N} n 번

• {N,} n 번 이상

  • 욕심 아닌 욕심

• 탐욕 (기본값) : 결과의 최대 범위를 일치하도록 시도

• 비 욕심

결과의 최소 범위를 일치하도록 시도 •

• 방법 : 정량 추가?

• 예 :

• ??

• *?

• +?

  • 국경 경기

• ^ 라인의 시작

선 • $ 끝

• \ B 단어 경계

• \ B 단어가 아닌 경계

• \ 시작에 입력

• Z 입력 끝 \

• 참고 : 다른 나 때문에 성능의 맥락에서 차이가 있습니다

14.2. 파이썬 일반

14.2.1 모듈

  • 수입 재

14.2.2.의 RegexObject 일반 대상

  • 스키마 객체, 컴파일의 성능 후 정규 표현식 (바이트 코드 및 캐시로 컴파일)
  • 컴파일

• re.compile (R '모드')

• 예 1

(1 개)  수입 2  
3  # : 사례 1 
4 텍스트 = " .. 톰은 8 세입니다 마이크는 25 살입니다 "   
5  
6  # 귀갑 = re.compile ( '\ D +') 
7  # patten.findall (텍스트)   
(8)  
(9)  # 동일한 기능   
10  
11  # re.findall ( '\ D +'텍스트)

• 예 2

1  임포트 다시    
 2  
3  # 사례 2 :     
4  
5 S = " \\ 저자 : 탐 "   
6 귀갑 re.compile = ( ' \\ 저자 ' )  
 7  patten.findall (들)    
 (8)  
(9)  # 출력 []이고, 코드 편집 요구에 다음과 같이     
10 개  
11 (S) = " \\ 저자 : 탐 "   
12 귀갑 re.compile = ( ' \\\\ 저자 ' )  
 13  patten.findall (S)  
 14  
15  # 출력이 [하다 "\\ 저자 ]
  • () .findall

모든 비 중복 일치를 찾기 •

모든 비 중복 일치를 찾기 •

• 반환 목록

• 예 1

# 사례 3 : 텍스트 = '톰 8 살입니다. 마이크는 23 살입니다. 피터 87 살입니다. ' 귀갑 = re.compile (R '\ + D') patten.findall (텍스트) # 출력은 [ '8', '23', '87']

• 예 2

# 사례 4 : 텍스트 = '톰 8 살입니다. 마이크는 23 살입니다. 피터 87 살입니다. ' p_name = re.compile (R '+ w [AZ] \') p_name.findall (텍스트) # 출력은 [ '톰', '마이크', '피터']

  • .match (문자열 [POS [endpos는])

• 경기 만 시작 위치

• 리턴 매치 개체

• 예 1

# 케이스 5 : 텍스트 = "<HTML> <head> </ head> <body> </ body> </ HTML> '= re.compile 패턴 (R'<HTML>") pattern.match (텍스트) # 출력 <re.Match 오브젝트이고; 스팬 = (0, 6), 일치 "<HTML>"> =

• 예 2 : 공간을 추가

# 케이스 6 : 텍스트 = "<HTML> <head> </ head> <body> </ body> </ HTML> '# 加 了 一个 空格 패턴 = re.compile (R'<HTML>") pattern.match (텍스트) # 출력은 비어 있습니다

  • .search (문자열 [POS [endpos는])

어디서든 검색 •

• 리턴 매치 개체

• 예 : 공백을 추가

# 케이스 7 : 텍스트 = "<HTML> <head> </ head> <body> </ body> </ HTML> '# 加 了 一个 空格 패턴 = re.compile (R'<HTML>") pattern.search (텍스트) # 출력 <re.Match 오브젝트이고; 스팬 = (1, 7), 일치 "<HTML>"> =

  • .finditer ()

모든 일치를 찾기 •

• 일치 개체 반복자 반환 요소를 포함

• 예 : 당신은 결과의 탐색을 수행 할 수 있습니다

# 사례 8 : 텍스트 = '톰 8 살입니다. 마이크는 23 살입니다. 피터 87 살입니다. ' P1 = re.compile (R '\ + D')는 그것의 m 대 p1.finditer (텍스트) = 출력 (m) # 출력 # <re.Match 오브젝트이고; 스팬 = (7,8), 매치 = '8'> # <re.Match 객체; 스팬 = (28, 30), 매치 = '23 '> # <re.Match 객체; 스팬 = (51, 53), 매치 = '87 '>

14.2.3. MatchObject 정합 개체

  • 성능 모드를 일치
  • .그룹()

0 또는 null로 • 매개 변수는 전체 경기를 반환

반환은 특정 패킷 정보와 일치 • 참조가있는 경우

• 매개 변수는 그룹 이름이 될 수 있습니다

  • .여러 떼()

• 모든 튜플의 하위 그룹화를 반환

  • .start ()는 특정 패킷의 개시 인덱스를 돌려줍니다
  • .END () 특정 패킷 종료의 인덱스를 돌려줍니다
  • 실시 예 1에있어서 상술

수입 재 텍스트 = "톰은 8 살입니다. 제리는 23 살입니다." 패턴 = re.compile (R '\ + D') pattern.findall (텍스트) # 출력이다.? [ '8', '23'] = re.compile 패턴 (R '(\ D +) * (\ D +) ') m = pattern.search (텍스트) m # 1 출력된다 : <re.Match 객체; 스팬 = (7, 31), 일치 = '8 세. 제리 23 '> m.group () # 출력은 다음과 같습니다'8 살. 제리 23 'm.group (0) # 출력은 다음과 같습니다'8 세. 제리 '(1) # 출력은 m.group'23 8 'm.group (2) # 출력이'23 'm.start (1) # 출력은 7 m.end (1) # 출력 인 8 m.start (2) # 출력은 29 m.end (2) # 출력은 31 m.groups () #에 출력된다 ( '8' ', 23')

  • .span ()는 특정 패킷 튜플의 시작과 끝의 인덱스를 돌려줍니다
  • .groupdict ()는 사전 테이블 형태로 그룹 이름과 결과를 반환
  • 예 2

# 사례 2 : 수입 재 패턴 = re.compile (R '(\ w +) (\ w +)') 텍스트 = "아름다운이 더 추한보다." pattern.findall (텍스트) # 출력은 : 잉크 (m.group ([( '는'다운 ')은, ('나은 ','이상 ')]는 그것에 m위한 pattern.finditer (텍스트) = )) # 출력은 다음과 같습니다 아름다운 #은보다 나은 #입니다

14.3. 그룹 정렬 화

14.3.1 장면

  • 매칭 패턴으로부터 정보를 추출
  • 장소는 수량되는 하위 응용 프로그램을 만듭니다

• 예

re.search 재 반입 (r'ab는 + C ','ababc ') #Output이다 : <re.Match 객체; 스팬 = (2, 5), 일치 = 'ABC'> re.search (R '(AB)이 + C', 'ababc') #Output 인 <re.Match 객체; 스팬 = (0, 5)는, 매치가 'ababc'> =

  • 대안의 범위를 제한

• 예

에 re.search (r'Center | 재 ','센터 ') #Output은 다음과 같습니다 <re.Match 개체; 스팬 = (0, 6), 일치 = '중심'> re.search (r'Center | 재 ','중심 ') #Output이다 : <re.Match 객체; 스팬 = (4, 6), 일치 = '리'> re.search (r'Cent은 (ER | 재) ','중심 ') #Output 인 <re.Match 객체; 스팬 = (0, 6), 매치 = '중심'> re.search (r'Cent (ER | 재) ','중심 ') #Output이다 : <re.Match 객체; 스팬 = (0, 6), 경기 = '센터'>

  • 규칙적인 패턴 추출에 ​​재사용 내용

• 예

re.search (R '+ w (\) + \ 1', '안녕하세요 세계') #Output은 다음과 같습니다 빈 re.search (R '+ w (\) + \ 1', '안녕하세요 안녕하세요') #Output은 다음과 같습니다 <re.Match 객체; 스팬 = (0, 11), 매치 = '안녕하세요 안녕하세요'>

14.3.2. 결단의 확인

  • (모드)
  • (? P <이름> 패턴)

• 예

텍스트 = "톰 98"패턴 = re.compile (R '? (P <이름> \ + w) :( P <스코어> \ D +)') m = pattern.search (텍스트) m.group () # 출력은 다음과 같습니다 '톰 : 98'm.group (1) #Output는 '톰'm.group ( '이름') #Output는 '톰'm.group가 ( '점수') #Output입니다 : 98 '

14.3.3. 참조

  • 일치는 ( '이름') m.group 객체
  • 패턴 내에서 (? P = 이름)
  • 실현 \ g <이름>
  • 문자열 조작

14.3.4. 응용 프로그램

• .split (문자열, maxsplit = 0)

• 분할 문자열

• 예

수입 재 텍스트 = '아름다운 더 추한보다. \ nExplicit 더 나은 암시보다. \ nSimple 더 복잡한보다.' P = re.compile은 (R '\ n'을) p.split는 (텍스트) #Output입니다 : # [ '아름다운이 더 추한보다.'# '노골적인 더 나은 암시보다.'# '간단한 더 복잡한보다 . ']는 (R re.split'\ W '가,'좋은 아침 ')가 #Output는 ['좋음 ','아침 '] re.split (R'는 \ n ', 텍스트, 2) #Output이다 # [ '다운 더 추한 초과합니다.'# '명시 더 암시 초과합니다.'# '단순 복잡한보다 낫다.'] re.split (R '는 \ n', 텍스트는, 1) #Output이다 # [ '아름다운 더 추한보다.'# '노골적인 더 나은 암시보다. \ nSimple 더 복잡한보다.']

• .SUB (REPL은 문자열 = 0을 계산)

• 대체 문자열

• 예

ords = 'ORD000 \ nORD001 \ nORD003'의 re.sub (R '\ D +', '-', ords) #Output 인 'ORD- \ nORD- \ nORD-'의 re.sub (R '([AZ] + ) (\ D +) ','\ g <2> - \ g <1> 'ords) #Output는'000-ORD \ n001 만-ORD \ N003-ORD '텍스트 = "다운 추한보다 * 낫다 . ' 의 re.sub (R '의 <strong> </ strong>을'텍스트 '\ * (*) \ *.?') #Output은 다음과 같습니다. '아름다운 추한 이상에서 <strong> </ STRONG>는' 의 re.sub (R '의 <strong> \ g <1> </ strong>을'텍스트 '\ * (*) \ *.?') #Output는 '아름다운보다 더 나은 </ strong>을 <strong>입니다 추한.'

• .subn (REPL, 문자열, 개수 = 0)

교체 및 교체의 수를 반환 •

• 예

re.subn (R '([AZ] +) (\ D +)', '\ g <2> - \ g <1>'ords) #Output는 ( '000-ORD \ n001 만-ORD \ n003- ORD ', 3)

  • 컴파일러 플래그

• 변경 규칙의 기본 동작

• re.I는 경우를 무시

• 예

텍스트 = '파이썬 파이썬 파이썬 re.search (r'python'텍스트) #Output이다 : <re.Match 객체; '[파이썬] re.findall (r'python'텍스트 re.I) # 스팬 = (7, 13), 매치 '파이썬> re.findall (r'python 텍스트)를 #Output 인'= 출력은 다음과 같습니다 [ '파이썬', '파이썬', 'PYTHON']

• re.M 여러 행과 일치

• 예

수입 재 re.findall (R '^ <HTML> ","\ n <HTML> ") #Output은 [] re.findall (R'^ <HTML>", "\ n <HTML>", 재. M) #Output이다 : "<HTML>"]

• re.S가 지정되었습니다. ""\ n을 포함한 모든 문자를 일치

• 예

[] re.findall (R '\ D ().', '1 \ NE're.S) #Output : #Output는 (R '. \ D ()', '1 \ NE')을 re.findall 같다 : "\ n ']

• ...

  • 모듈 수준의 작업

• re.purge ()는 정규 캐시를 청소

• 예

re.purge ()

• re.escape () 이스케이프 문자

• 예

re.findall (R '^', '^ 파이썬 ^') #Output는 [ '] re.findall (re.escape ('^ ')'^ 파이썬 ^ ') #Output이다 : ['^ ' '^']

15. 시스템 도구

15.1. 개념

15.1.1. 명령 행 도구

15.1.2. 쉘 스크립트

15.1.3 시스템 관리

15.2. 시스템 모듈

15.2.1. SYS

  • 파이썬 런타임의 세트를 매핑하는 운영 체제 기능을 제공합니다
  • 휴대용 인터페이스 크로스 플랫폼 운영 시스템 프로그래밍을 제공
  • 을 os.path 파일과 디렉토리 도구를 휴대 프로그래밍 인터페이스를 제공
  • sys.platform
  • sys.version
  • sys.path에
  • sys.modules에
  • sys.exc_info는 () 마지막 예외 정보를 가져옵니다

15.2.2.

15.3. SYS

15.3.1. 플랫폼 및 버전

15.3.2. 관측 예외 사항

• 예

수입 SYS 가져 오기 시도 추적 : 제외 인상 KeyError를 : 인쇄 (sys.exc_info ()) # 출력은 다음과 같습니다 (<클래스 'KeyError를'>, KeyError를 (), <0x00000200332E6808에서 역 추적 객체>)

  • traceback.print_tb (sys.exc_info () [2])

• 예

traceback.print_tb (sys.exc_info () [2]) # 출력은 : 파일 "<ipython 입력 70-1bc1bfcd4795 ->", 라인 (5)에 <모듈> 인상 KeyError를

15.3.3. 명령 줄 매개 변수

  • sys.argv에
  • 표준 입력 스트림 sys.stdin하면) (기본 입력에 상당
  • 기본 인쇄에 sys.stdout 표준 출력 스트림에 해당 ()
  • 표준 오류 스트림을 sys.stderr에
  • os.environ
  • .getcwd ()는 현재 작업 디렉토리를 가져옵니다
  • .listdir (경로) 디렉토리 내용을 나열
  • .chdir (경로) 작업 디렉토리를 변경하려면
  • .getpid ()는 현재의 프로세스 ID를 취득
  • .getppid ()는 현재 부모 프로세스 ID를 취득
  • .system () 파이썬 스크립트는 쉘 명령어를 실행하는
  • .popen () 명령의 입력을 실행하고 출력 스트림은 연결되어
  • .mkdir ( '디렉토리 이름') 디렉토리를 만들 수 있습니다
  • .rmdir ( '디렉토리 이름') 디렉토리를 삭제하려면
  • .rename ( '구명', '새로운 이름') 개명
  • .remove ( '파일 이름') 파일을 삭제합니다
  • 분리기 .sep
  • .pathsep 경로 구분
  • .curdir 현재 디렉토리 기호를 기준으로
  • .pardir 상위 디렉토리 기호를 기준으로
  • .isdir (경로) 디렉토리 여부
  • .isfile (경로) 파일이
  • 이 경우 .exists (경로)
  • .split (경로) 분할 경로
  • .splitext (경로) 분할 경로 확장
  • .join () 접속 경로
  • .normpath ()로 정규화
  • .abspath ()의 절대 경로

15.3.4. 표준의 흐름

15.4.

15.4.1. 쉘 변수

15.4.2. 관리 도구

15.4.3. 실행 쉘 명령

15.4.4. 파일 처리

15.4.5. 휴대용 도구

15.4.6. .Path 경로 모듈

추천

출처www.cnblogs.com/hemin96/p/11840914.html