Day11 Pythonの研究ノート&注意のキーポイント

14.正規表現

14.1。概要

14.1.1。概念

  • 正規表現
  • 試合に1つ以上のテキスト検索文字列を記述したテキストモード、

14.1.2。典型的なシーン

  • データ検証
  • テキストのスキャニング
  • テキスト抽出
  • テキスト置換
  • テキストセグメンテーション

14.1.3構文

  • リテラル

•通常の文字

•エスケープする必要が

•\

•^

•$

•。

•|

•?

•*

•+

•()

•[]

•{}

  • メタキャラクタ

14.1.4マッチング

  • 単語、事前に定義されたメタ文字

•。の\ nは除くすべての文字

[0-9]へ•\ dはデジタル同等

•[^ 0-9]と同じ\ Dデジタル料、

•\ sの空白文字\トン\ nは\ rを\ F \ V

•\ S非空白文字[^ \トン\ nは\ rを\ F \ V]

英数字ワット•\ [-ZA-Z0-9_]

•\ W英数字以外の文字[^-ZA-Z0-9_]

  • バッチオプション

•| NO | YES

  • 数量詞(どの文字、メタ文字、文字リピート)

•?0または1

•* 0回以上

•+ 1回以上

•      特定

•{N、M}オーダー範囲

•{n}はn回

•{N}少なくともn回

  • 貪欲と非欲張り

•貪欲(デフォルト):結果の最大範囲を一致させよう

•非欲張り

•結果の最小範囲を一致させるようにしてください

•方法:数量詞を追加しましたか?

•例:

•??

•*?

•+?

  • ボーダー一致

•^行の始まり

ラインの•$側

•\ bは単語の境界

•\ B非単語境界

•\ Aが入力を開始

•Z入力端\

•注:あり異なっているため、またはパフォーマンスの文脈の違い

14.2。Pythonの定期的な

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(複数可)  
 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 '[AZ] \ W +')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()

•すべての一致を探します

Matchオブジェクトのイテレータを返します。•要素を含みます

•例:あなたは結果のトラバースを行うことができます

#事例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に•パラメータはマッチ全体を返します。

戻り値は、特定のパケットの詳細を一致させる•参照がある場合

•パラメータは、グループ名を指定できます

  • .groups()

•は、すべてのタプルのサブグループを返します。

  • .start()は、特定のパケットの開始インデックスを返します。
  • .END()は、特定のパケット終了のインデックスを返します
  • 実施例1上記の方法

テキストの再インポートが=「トムは8歳です。ジェリーは23歳です。」パターン= re.compile(R '\ D +')pattern.findall(テキスト)#出力は次のとおりです。?[ '8'、 '23'] =パターンre.compile(R '(\ D +)*(\ D +) 「)、M = pattern.search(テキスト)M#出力である:<re.Matchオブジェクト。スパン=(7、31)、一致= '8歳。ジェリーは23' である> m.group()#出力である:「8歳。ジェリーは23' m.group(0)#出力である:「ある8歳。ジェリー23' m.group(1)#出力である: '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 '(\ワット+)(\ワット+)')テキスト= "美しいが良い醜い超えています。" pattern.findall(テキスト)#出力がある:印刷(m.group([( '美しい'、 'は')、( '良好'、 'よりも')]がpattern.finditerその中mに対する(テキスト)= ))#出力は次のとおりです。#美しいは#よりも良好です

14.3。グループマーシャリング

14.3.1シーン

  • マッチングパターンから情報を抽出します
  • 場所の数量であるサブアプリケーションを作成します。

•例

re.search再インポート(r'ab + C」、 'ababc')#Outputは<re.Matchオブジェクト。スパン=(2,5)、一致= 'ABC'> re.search(R '(A-B)+ 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 '(\ワット+)+ \ 1'、 'Hello Worldの')#Outputは次のとおりです。ブランクre.search(R '(\ワット+)+ \ 1'、 'ハローハロー世界')#Outputは以下のとおりです。 <re.Matchオブジェクト。スパン=(0、11)、マッチ= 'ハローハロー'>

14.3.2。肯定

  • (モード)
  • (?P <name>のパターン)

•例

テキスト= "トム: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である:#が[「美しいが良い醜いよりも」#「明示的には良好暗黙よりなる。」#「シンプルが良い複雑より。 '] re.split(R' \ 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、 '<強い> \ 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は、ケースを無視します

•例

テキストは= 'PythonのPythonのPythonのre.search(r'python」、テキスト)#Outputは<re.Matchオブジェクト。スパン=(7、13)、一致= 'のpython'> re.findall(r'python 'テキスト)#Outputある:[ 'のpython'] re.findall(r'python'、テキスト、re.I)#出力は次のとおりです。[ 'Pythonの'、 'のpython'、 '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')#Outputである:[] re.findall(R '\ D()'、 '1 \ NE'、re.S)#Outputです:[ '\ 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

  • Pythonランタイムのセットをマッピングするオペレーティングシステムの機能を提供します
  • ポータブルインターフェイスクロスプラットフォーム、オペレーティング・システムのプログラミングを提供
  • 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(パス)
  • 現在のプロセスIDを取得)(.getpid
  • 現在の親プロセスIDを取得)(.getppid
  • .system()のPythonスクリプトは、シェルコマンドを実行します
  • .popen()コマンドおよび入力を実行し、出力ストリームが接続されています。
  • ディレクトリを作成する.mkdir(「ディレクトリ名」)
  • ディレクトリを削除する.rmdir(「ディレクトリ名」)
  • .rename('旧名','新名') 改名
  • .remove(「filename」)は、ファイルを削除します
  • セパレータ.sep
  • .pathsepパス区切り
  • .curdirカレントディレクトリのシンボルに対する相対
  • .pardir親ディレクトリ記号に対する相対
  • .isdir(パス)ディレクトリか
  • .isfile(パス)ファイルのこと
  • .exists(パス)がある場合
  • .split(パス)分割経路
  • .splitext(パス)スプリットパス拡張
  • .join()接続経路
  • .normpath()正規化されたパス
  • .abspath()絶対パス

15.3.4。標準流れ

15.4。THE

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