Pythonの文字列処理
3852 ワード
コンテンツが始まる前に、これまでの経験(プログラミング言語を勉強したことがある場合)に基づいて、文字列の操作にどのような可能性があるのか、できるだけ列挙し、Pythonでどのようにしているのかを比較してみましょう.たとえば、文字列接続、文字列コピー、文字列比較、文字列切り取り、文字列大文字と小文字の変換など、考えられる文字列操作があります.これらのアイデアがあったら、Pythonがどのように実現されているかを見てみましょう.
1.文字列の基本操作
1)文字列の表現:'abc',"abc",''abc,""abc"",いずれも表式文字列:abcに用いることができる.もちろん、3つの引用符はドキュメントの注釈に使用されます.
2)「原」文字列とUnicode文字列:r「This is String」は、文字列の前にrまたはRを加え、その文字列が「原」文字列であることを示し、「原」文字列のエスケープ文字機能は無効になるが、エスケープ文字で終わることはできない.
r'abc'これは構文エラー(SyntaxError:EOL while scanning string literal)であり、Pythonは「元」文字列の場合でも''で文字列を終了させることは許されない.必ずで終わる文字列を作成する場合は、
+接合:r'abc'+''を使用して生成された文字列の結果は、abc
文字列の前にuまたはUを付けると、文字列をUnicode文字列に変換します.例えば、u'Hello'20 World、文字列の'20 Unicodeコードに対応するASCIIコードはスペースです.
3)文字列のスライス方式.文字列は文字列のシーケンスからなるので、スライスを使用して文字列にアクセスすることができる.
4)文字列遍歴,for i in str:print i,
またはlistメソッドを使用して、文字列をリストに構築し、各文字がリストの各要素に対応し、list[str]
5)統計対象文字列がソース文字列に現れる回数:haystack.count('needle')、haystackはソース文字列オブジェクトであり、'needle'はターゲット文字列であり、needleがhaystackに現れる回数を統計するために使用されます.
6)文字列の分散と接合:split(),join()
7)文字列の比較では、2つの文字列のサイズを比較するか、等しいかどうかを論理演算子で直接比較できます.
8)文字列切り取り:スライス.スライスの理解は[i:j]であり、オフセット量iから、オフセット量jの内容が含まれないまでである.
10)文字とASCIIコードの間の変換:ord,chr.ord()は文字をASCIIコードに変換し、chr()はASCIIコードを文字に変換する
2.内省を借りる
文字や文字列を忘れた方法が不明な場合は、Pythonの内省機能:dir()関数、dir関数を使用して文字列が現在使用可能な方法をリストできますが、これは方法名のみをリストし、具体的な方法機能の説明を知りたい場合はhelp()関数を使用できます.
Pythonのdocumentationも検索できます.https://www.python.org/doc/
3.クラス文字列かどうかを判断する
オブジェクトがクラス文字列であるかどうかを判断するには、次の2つの方法を使用します.
1)basestringクラスの組み込みメソッドinstance()を使用します.注意:basestringクラスはstrとunicodeの親です.このクラスは呼び出されたりインスタンス化されたりすることはできません.1つのオブジェクトがstrまたはunicodeのインスタンスであるかどうかを判断するためにのみ使用できます.
2)アヒルの判断法を用いる.注:アヒルの判断法:歩くのがアヒルのようで、鳴き声もアヒルのようであれば、私たちはアヒルだと思っています.私たちの日常生活の論理的に理解することは、実は対象の特徴に基づいて分類することです.
以上の部分は『Python CookBook』を参考に
1.文字列の基本操作
1)文字列の表現:'abc',"abc",''abc,""abc"",いずれも表式文字列:abcに用いることができる.もちろん、3つの引用符はドキュメントの注釈に使用されます.
2)「原」文字列とUnicode文字列:r「This is String」は、文字列の前にrまたはRを加え、その文字列が「原」文字列であることを示し、「原」文字列のエスケープ文字機能は無効になるが、エスケープ文字で終わることはできない.
r'abc'これは構文エラー(SyntaxError:EOL while scanning string literal)であり、Pythonは「元」文字列の場合でも''で文字列を終了させることは許されない.必ずで終わる文字列を作成する場合は、
+接合:r'abc'+''を使用して生成された文字列の結果は、abc
文字列の前にuまたはUを付けると、文字列をUnicode文字列に変換します.例えば、u'Hello'20 World、文字列の'20 Unicodeコードに対応するASCIIコードはスペースです.
3)文字列のスライス方式.文字列は文字列のシーケンスからなるので、スライスを使用して文字列にアクセスすることができる.
str = 'My String'
str[3:]
str[:3]
4)文字列遍歴,for i in str:print i,
またはlistメソッドを使用して、文字列をリストに構築し、各文字がリストの各要素に対応し、list[str]
5)統計対象文字列がソース文字列に現れる回数:haystack.count('needle')、haystackはソース文字列オブジェクトであり、'needle'はターゲット文字列であり、needleがhaystackに現れる回数を統計するために使用されます.
6)文字列の分散と接合:split(),join()
str = 'Hello,World.'
str.split(',') # ',' , , ,
str = 'a+b,c'
'+'.join(str) # '+' , , 。 :'a+++b+,+c',a,b 1,3 '+' , 2 '+',
l = ['a', 'b', 'c']
','.join(l) # 'a,b,c', , , join , 。
7)文字列の比較では、2つの文字列のサイズを比較するか、等しいかどうかを論理演算子で直接比較できます.
a = 'abc'
b = 'abC'
a > b # True
a = 123
b = '123'
a > b # False
a = '1234'
b = '1234'
a == b # True
a is b # True
id(a) # 152699840, a, b ,
id(b) # 152699840
8)文字列切り取り:スライス.スライスの理解は[i:j]であり、オフセット量iから、オフセット量jの内容が含まれないまでである.
a = 'hello world.'
a[:10] # 'hello worl'
a[3:] # 'lo world.'
a[:] # 'hello world.',
a[:-1] # 'hello world', 1 ,
)文字列の反転str = 'hello world'
str[::-1] # , 'dlrow olleh'
' '.join(str.split()[::-1]) # , 'world hello'
' '.join(reversed(str.split())) #
10)文字とASCIIコードの間の変換:ord,chr.ord()は文字をASCIIコードに変換し、chr()はASCIIコードを文字に変換する
ord('a') # ASCII :97
chr(97) # ASCII 97 :a
2.内省を借りる
文字や文字列を忘れた方法が不明な場合は、Pythonの内省機能:dir()関数、dir関数を使用して文字列が現在使用可能な方法をリストできますが、これは方法名のみをリストし、具体的な方法機能の説明を知りたい場合はhelp()関数を使用できます.
str = 'abc'
dir(str) #
help(str.upper) # upper()
Pythonのdocumentationも検索できます.https://www.python.org/doc/
3.クラス文字列かどうかを判断する
オブジェクトがクラス文字列であるかどうかを判断するには、次の2つの方法を使用します.
1)basestringクラスの組み込みメソッドinstance()を使用します.注意:basestringクラスはstrとunicodeの親です.このクラスは呼び出されたりインスタンス化されたりすることはできません.1つのオブジェクトがstrまたはunicodeのインスタンスであるかどうかを判断するためにのみ使用できます.
def isString(var):
return isinstance(var, basestring)
isString('a') # True
basestringクラスにはUserStringクラスが含まれていないため、文字列がUserStringクラスによってインスタンス化されている場合は、機能しません!import UserString
str = UserString.UserString('abc')
isString(str) # False
2)アヒルの判断法を用いる.注:アヒルの判断法:歩くのがアヒルのようで、鳴き声もアヒルのようであれば、私たちはアヒルだと思っています.私たちの日常生活の論理的に理解することは、実は対象の特徴に基づいて分類することです.
def isStringLike(var):
try: var + ''
except: return False
else: return True
isStringLike('a') # True
str = UserString.UserString('abc')
isStringLike(str) # True
以上の部分は『Python CookBook』を参考に