python学習ノートの2:文字列の使用

12166 ワード

ここでは、文字列を使用して他の値をフォーマットする方法を紹介し、文字列の分割、接続、検索などの方法で何ができるかを理解します.
1.基本文字列操作
すべての標準的なシーケンス操作(インデックス、スライス、乗算、メンバーシップの判断、長さの求め、最大値と最小値の取り)は、文字列にも適用されます.しかし、文字列は可変ではないことを覚えておいてください.したがって、次のスライス付与は合法的ではありません.
>>> website = "www.python.org"

>>> website[-3:] = "com"

TypeError:object doesn't support slice assignment

 
2.文字列フォーマット:シン版
文字列フォーマットは、文字列フォーマットオペレータ、すなわちパーセント記号を使用して実現されます.
%の左側に文字列を配置し、右側にフォーマットする値を配置します.文字列や数字などの値を使用したり、複数の値のメタグループや辞書を使用したりできます.一般的には、メタグループを使用します.
>>> format = "hello,%s. %s enough for ya?"

>>> values = ("world","Hot")

>>> print format %values

hello world,Hot enough for ya?

 
3.文字列フォーマット:完全版
フォーマットオペレータの右の操作数は任意で、メタグループであれば、各要素は個別にフォーマットされ、各値には対応する変換説明子が必要です.
注:変換式の一部として変換するメタグループが存在する場合は、エラーを回避するためにカッコで囲む必要があります.
>>> '%s plus %s equals %s'   %(1,1,2)

'1 plus 1 equals 2'

基本的な変換説明子には、これらの項目の順序が重要であることに注意してください.
(1)%文字:変換説明子の開始をマークする;
(2)変換フラグ(オプション):-左揃え、+値を変換する前にプラスマイナス記号を付けることを表す.「」(空白文字)は、整数の前にスペースを保持することを示します.0は変換値を表し、桁数が足りない場合は0で埋めます.
(3)最小フィールド幅(オプション):変換された文字列は、少なくともこの値で指定された幅を持つ必要があります.*の場合、値のタプルから幅が読み出されます.
(4)点(.)「後続精度」(オプション):変換が実数の場合、精度は小数点以下の桁数を表します.変換が文字列の場合、この数値は最大フィールド幅を表します.*の場合、精度はメタグループから読み出されます.
(5)変換タイプ
3.1簡単な変換
変換タイプを書くだけで簡単です.
>>> "price of eggs: $%d"  % 42

'price of eggs:$42'

3.2フィールド幅と精度
文字幅は、変換後の値に保持される最小文字数であり、精度はデジタル変換の場合、結果に含まれるべき小数点以下の桁数であり、文字列変換の場合、変換後の値に含まれる最大文字数である.
*をフィールド幅または精度として使用できます.この場合、数値はメタグループパラメータから読み出されます.
>>> '%5.*s' % (3,'hello')

'  hel'

3.3記号、位置合わせ、0入力
フィールドの幅と精度の値の前に、ゼロ、プラス、マイナス、またはスペースの「表」を配置することもできます.
>>> '010.2f' % pi

'0000003.14'

>>> print ('%+5d' % 10) + '
' + ('%+5d' % -10) +10 -10 >>> '%-10.2f' % pi '2.14 ' >>> print('% 5d' % 10) + '
' + ('% 5d' % -10) 10 -10

 
4.文字列メソッド
4.1 find
findメソッドは、長い文字列でサブ文字列を検索できます.サブストリングの位置の左端のインデックスを返し、見つからない場合は-1を返します.
>>> "with a moo-moo here".find('moo')

7

>>> title = "python 's flying"

>>> title.find(flying)

11

この方法はまた、任意の開始点パラメータと終了点パラメータを受け入れることができる.注:開始値と終了値で指定された範囲には、最初のガイドが含まれますが、2番目のインデックスは含まれません.
>>>subject = "get rich now"

>>>subject.find('get',1)

-1

>>>subject.find('rich',2,8)

4

4.2 jion
jionメソッドは非常に重要な文字列メソッドであり、splitメソッドの逆メソッドであり、キューに要素を接続するために使用されます.
>>> seq = ['1','2','3']

>>> j = '+'

>>> j.jion(seq)

'1+2+3' 

注:接続するキュー要素はすべて文字列でなければなりません.
4.3 lower
lowerメソッドは、文字列の小文字版を返します.
>>> "THIS IS A CAT".lower()

'this is a cat'

4.4 replace
replaceメソッドは、ある文字列のすべての一致項目が置換された文字列を返します.(「検索と置換」と同様)
>>> 'this is a test'.replace('is','eez')

'theez eez a test'

4.5 split
これは非常に重要な文字列メソッドであり、jionの逆メソッドであり、文字列をシーケンスに分割するために使用されます.
>>> '1+2+3'.split('+')

['1','2','3']

注意:区切り記号が指定されていない場合、プログラムはすべてのスペースを区切り記号(スペース、タブ、改行など)として使用します.
4.6 strip
stripメソッドは、両側(内部を除く)のスペースを除去する文字列を返します.
>>> " this is a cake      ".strip()

'this is a cake'

削除する文字をパラメータとして指定することもできます.
>>> "*** spam * for everyone!!!".strip('* !')

'spam * for everyone'

4.7 translate
translateメソッドはreplaceメソッドと同様に、文字列の一部を置き換えることができますが、前者とは異なり、translateメソッドは単一の文字のみを処理します.その利点は、replaceよりも効率が高い場合がある複数の置換を同時に行うことができることです.
translate変換を使用する前に、変換テーブルを完了する必要があります.変換テーブルには、文字の対応関係がある文字で置き換えられます.このテーブルには256個の項目があるので、stringモジュールのmaketrans関数を使用して自分で書かないでください.
maketrans関数は、2つのパラメータを受信します.2つの等長文字列は、1番目の文字列の各文字が2番目の文字列の同じ位置の文字で置き換えられていることを示します.
>>> from string import maketrans

>>> table = maketrans('cs','kz')

>>> 'this is an incredible test'.translate(table)

'thiz iz an inkredible tezt'

translateの2番目のパラメータはオプションで、削除する文字を指定するために使用されます.すべてのスペースを削除するには、次の手順に従います.
>>> 'this is an incredible test'.translate(table,' ')

'thizizaninkredibletezt'