【2017-08-22】文字列及びテキストの処理(一)
2438 ワード
文字列の分割と一致文字列分割指定された分割子に基づいて1つの文字列をstr.split()を単純な分割子処理にのみ使用する方法、単一の分割子のみを指定することができ、かつ分割子の周囲のスペースなどはre.split()を処理することができず、複数の分割子を指定することができ、正規表現によって決定され、使用が柔軟である.ここで、正規表現は、キャプチャパケットと非キャプチャパケットの違いに注意し、一般に、結果リストに分割子を保存する必要がある場合は、キャプチャパケット を用いる.文字列の先頭または末尾が文字列の先頭または末尾文字列のstartswith()またはendswith()にどのように一致するか、操作は文字列またはメタグループを受け入れ、メタグループはマッチングを表す可能性が多く、listまたはsetなどのタイプであれば、強制的にメタグループに変換する必要があります.正規表現Match() を覚えておいてください. shellワイルドカードマッチング文字列shellワイルドカード単純マッチング文字列fnmatchモジュールのfnmatch()またはfnmatchcase()を使用してshellワイルドカードマッチング文字列を使用する方法shellワイルドカード単純マッチング文字列を使用する方法自分で書いたパターンに基づいてマッチングし、オペレーティングシステムに関係なくshellワイルドカードは正規表現とは異なり、shell特殊世代サブ文字と理解され、文字列に一定のあいまいなマッチングを行う.一般的なワイルドカードは主に*、[]、{}、? *マッチング0または複数の文字a*b aとbの間に任意の長さの任意の文字があってもよいし、aabcb、axyzb、a 012 b、abなどの1つもなくてもよい. ?任意の文字a?b aとbの間に一致する文字は、aab、abb、acb、a 0 bなどの任意の文字であってもよい. [list]一致listの任意の単一文字a[xyz]b aとbの間にも1文字しか存在しない必要がありますが、axb、ayb、azbなどのxまたはyまたはzのみです. [!list]マッチングlistの任意の単一文字a[!0-9]b aとbの間にも1文字しか存在しない必要がありますが、axb、aab、a-bなどのアラビア数字ではありません. [c 1-c 2]c 1-c 2の任意の単一文字、例えば、[0-9][a-z]a[0-9]b 0と9の間には、a 0 b、a 1 b...a 9 bのような1文字しか存在しない必要がある. {string 1,string 2,...}マッチングsring 1またはstring 2(またはそれ以上)その1つの文字列a{abc,xyz,123}b aとbの間にはabcまたはxyzまたは123の3つの文字列の1つしかありません.
#
import re
newlines="we are;hello,hi "
newlines.split(" ")
re.split(r" |;|,",newlines) # :['we', 'are', 'hello', 'hi', '']
re.split(r"[\s;,]\s*",newlines) # :['we', 'are', 'hello', 'hi', '']
re.split(r"(\s|;|,)\s*",newlines)# , :['we', ' ', 'are', ';', 'hello', ',', 'hi', ' ', '']
re.split(r"(?:\s|;|,)\s*",newlines)# , (?:....) , :['we', 'are', 'hello', 'hi', '']
#
lines=['abc.txt","abc.py","a.c","123.py"]
for i in lines:
i.endswith(".py")# :False True False True
for i in lines:
i.endswith((".py",".c"))# False True True True
#
from fnmatch import fnmatch,fnmatchcase
lines=['abc.txt","abc.py","a.c","123.py"]
for i in lines:
fnmatchcase(i,"*.txt")# True False False False