Pythonの基盤を統合する(2)
Python文字列
文字列はPythonの組み込みオブジェクトであり、テキストベースの情報を格納および表現するために使用されます。 「PythonIntroduction」の研究を通じて、文字列の次の特性を理解し、習得しました。
1、 文字列は定数です
数字と同じように、文字列も定数であり、その値はそれ自体であるため、文字通りの定数でもあります。言い換えれば、それが何であるか、それが何であるかを確認し、(その場で)変更することはできません。
例えば:
‘abc’
‘abc’
2、 文字列はシーケンスタイプの定数です
文字列の名前に「文字列」が含まれている理由は、一般的に複数の文字が含まれていることを理解できます。ほとんどの場合、複数の文字または複数の文字で構成されている可能性があります。ただし、これらの「複数の文字」が「文字列化」されると、独立した文字列定数を構成します。コンピュータのメモリでは、それは小さなストレージスペースのように見え、格納されている情報をその場で変更することはできません。
変更できないため、文字シーケンスが固定されているため、シーケンスタイプのデータにもなります。他のシーケンスデータと同様に、シーケンスのシーケンス(インデックスインデックス)、インデックス値(指定された位置の文字インデックス[n])、およびシーケンスの長さ(len)があります。
例えば:
‘abc’[0]
‘a’
len(‘abc’)
3
3、 文字列は、値を持つ定数として変数に割り当てることができます
文字列は定数であるため、変数に割り当てることができ、変数にその値があります。文字列が変数に割り当てられると、コンピューターのメモリ内で、参照が実際に変数に追加され、この参照はメモリ空間内の文字列のストレージ領域を指します。
例えば:
x = ‘abc’
x
‘abc’
大丈夫、
文字列に関するこれらの常識を確認した後、
今日は文字列の操作に焦点を当てます。
Pythonは、多数の組み込み関数(メソッド)を提供します。
必要に応じて文字列を処理する必要がある場合に便利です。
一手で簡単にできます。
これは、Pythonプログラミングの実用的なアプリケーションでもあります。
精通し、習得する必要がある多くの基本的な知識とスキルに遭遇します。
1、 文字列サイズ操作
(1)ケース変換
str.lower()#str文字列の小文字の形式を返します。
str.upper()#str文字列の大文字の形式を返します。
PS:この新しく生成された文字列は、元のメモリアドレスへの参照を追加しませんが、メモリセグメントを再生成することに注意してください。
例えば:
' aBcDeF'.lower()
' abcdef'
' aBcDeF'.upper()
' ABCDEF'
(2)こぶ変換
**str.title()#**すべての単語の最初の文字が大文字で他の文字が小文字の新しい文字列を返します
str.capitalize()#最初の文字を大文字にし、他の文字をすべて小文字にして新しい文字列を返します
例えば:
print('ab XY'.title())
Ab Xy
print('abc DE'.capitalize())
Abc de
(3)ケースの逆転
str.swapcase()#すべての文字列は大文字と小文字が変換されます(大文字->小文字、小文字->大文字)
例えば:
print('abc XYZ'.swapcase())
ABC xyz
2、 文字列判定操作
(1)文字列が数字、文字、文字、または数字のいずれであるかを判別します
str.isnumeric()#文字列が数値(小数点なし)であるかどうかを判別します
str.isalpha()#文字列が文字かどうかを判断します
str.isalnum()#文字列が文字と数字の混合であるかどうかを判別します(他の文字を除く)
例えば:
>>> print('34'.isnumeric())
True
print('abc'.isalpha())
True
print('a34'.isalnum())
True
(2)文字列または最初の文字が大文字か小文字かを判別します
str.islower()#文字列は大文字ですか?
str.isupper()#文字列は小文字ですか?
str.istitle()#文字列の各単語の最初の文字は大文字で、他の文字は小文字ですか?
PS:文字列strには、少なくとも1つの文字列文字(純粋な数字ではないなど)が含まれている必要があります。含まれていない場合、Falseが返されます。
例えば:
print('a34'.islower())
True
print('AB'.isupper())
True
print('Aa'.isupper())
False
print('Aa Bc'.istitle())
True
print('Aa_Bc'.istitle())
True
print('Aa bc'.istitle())
False
print('Aa_bc'.istitle())
False
print('Aa BC'.istitle())
False
(3)文字列が空で、印刷可能であり、識別子定義規則に準拠しているかどうかを判断します
str.isspace()#文字列が空白かどうか(スペース、タブ、新行など)
str.isprintable()#文字列が印刷可能かどうか
str.isidentifier()#文字列が識別子定義ルールを満たしているかどうか
例えば:
(1)空白かどうかを確認します。空白と見なされる文字はありません。
print(' '.isspace())
True
print(' \t'.isspace())
True
print('\n'.isspace())
True
print(''.isspace())
False
print('abc'.isspace())
False
(2)それが印刷可能な文字であるかどうかを判別します。
print('\n'.isprintable())
False
print('\t'.isprintable())
False
print('acd'.isprintable())
True
print(' '.isprintable())
True
print(''.isprintable())
True
(3)識別子定義ルールが満たされているかどうかを判断します。文字または下線でのみ開始でき、数字、文字、下線以外の文字を含めることはできません。
print('abc'.isidentifier())
True
print('2abc'.isidentifier())
False
print('abc2'.isidentifier())
True
print('_abc2'.isidentifier())
True
print('_abc_2'.isidentifier())
True
print('_Abc_2'.isidentifier())
True
print('Abc_2'.isidentifier())
True
3、 充填操作
(1)ストリングは(両側に)中央に配置され、塗りつぶされます
str.center(width[, fillchar])
文字列は中央に配置され、文字列全体の長さが幅で指定されたサイズに達するように、左側と右側が塗りつぶし文字で埋められます。
fillcharのデフォルトはスペースです。
幅が文字列の長さよりも小さい場合、それを埋めることはできず、文字列自体が直接返され、新しい文字列オブジェクトは作成されません。
例:文字列を下線で塗りつぶして中央に配置します
print('abc'.center(5,'_'))
_ ab_
print('abc'.center(6,'_'))
__ abc_
(2)文字列は左右で、反対側に塗りつぶされます
str.ljust(width[, fchar])
str.rjust(width[, fchar])
PS:fcharを指定しない場合、デフォルトでスペースで埋められます。幅が文字列の長さ以下の場合、それを埋めることはできず、元の文字列が直接返され、新しい文字列オブジェクトは作成されません。
例えば:
print('xyz'.ljust(5,'_'))
xyz__
print('xyz'.rjust(5,'_'))
__ xyz
(3)ゼロで埋める
str.zfill(width)
例えば:
print('abc'.zfill(5))
00 abc
print('-abc'.zfill(5))
print('+abc'.zfill(5))
+0 abc
print('42'.zfill(5))
00042
4、 文字列のサブ文字列検索
(1)文字列内のサブ文字列の出現回数を返します
str.count(sub[, start[, end]])
PS:インデックス番号を使用して、計算を開始する場所(開始)と計算を終了する場所(終了)を指定できます。デフォルトのインデックスは、終了境界を除いて0から計算されます。
例えば:
print('aaxyzaabbcaa'.count('aa'))
3
(2)文字列が開始または終了する文字を決定します
str.startswith(fix[, start[, end]])
str.endswith(fix[, start[, end]])
例:修正が通常の文字列である場合
print('abcxyz'.startswith('abc'))
True
print('abcxyz'.endswith('xyz',4))
False
print('abcxyz'.endswith('xyz',0,5))
False
**fixがタプルの場合、タプル内のいずれかの要素がendswithの条件を満たす限り、Trueを返します。 ****
print('abcxyz'.endswith(('ab','xyz')))
True
print('abcxyz'.endswith(('ab','xy')))
False
(3)検索文字列に特定の部分文字列が含まれているかどうか
str.find(sub[, start[, end]])
str.rfind(sub[, start[, end]])
str.index(sub[, start[, end]])
str.rindex(sub[, start[, end]])
find()は、文字列にsubstring subが含まれているかどうかを検索し、含まれている場合はsubのインデックス位置を返し、含まれていない場合は「-1」を返します。検索の開始位置と終了位置を指定できます。
rfind()は、検索された右端のサブストリングの位置を返します。サブストリングが1つだけ、または見つからない場合は、find()と同等です。
index()はfind()と同じですが、唯一の違いは、サブストリングが見つからない場合、ValueErrorがスローされることです。
例えば:
' abcxyzXY'.find('xy')
3
' abcxyzXY'.find('xy',4)
-1
' xyzabcabc'.rfind('bc')
7
**in演算子を使用して、文字列にサブ文字列subが含まれているかどうかを判別できます。これは、インデックス位置ではなく、ブール値を返します。 ****
' xy' in 'abxycd'
True
' xyz' in 'abxycd'
False
5、 交換操作
(1)文字列の古いサブ文字列を新しい文字列に置き換えます
str.replace(old, new[, count])
PS:カウントが指定されている場合、最初のカウントの古いサブストリングのみが置き換えられることを意味します。 substring oldがstrで見つからない場合、それを置き換えることはできず、新しい文字列オブジェクトを作成せずに元の文字列が直接返されます。
' abcxyzoxy'.replace('xy','XY')
‘abcXYzoXY’
' abcxyzoxy'.replace('xy','XY',1)
‘abcXYzoxy’
' abcxyzoxy'.replace('mn','XY',1)
‘abcxyzoxy’
(2)文字列マッピング変換(単純な暗号化方法として理解できます)
str.translate(table)
static str.maketrans(x[, y[, z]])
str.maketrans()は、文字から文字へのマッピングテーブルを生成し、translate(table)を使用して文字列内の各文字をマッピングします。
たとえば、「I love you」の単純な暗号化を行い、一部の文字を数字に置き換えて、変換された文の意味が他の人にわからないようにします。
ステップ1:マッピングテーブルを作成する
in_str='abcxyzlij'
out_str='123456789'
map_table=str.maketrans(in_str,out_str)
ステップ2:マッピングテーブルを使用してマッピング(暗号化)を実装する
mylove = 'I love you'
result = mylove.translate(map_table)
print(result)
I 7ove 5ou
PS:maketrans(x [、y [、z]])のxとyは両方とも文字列であり、長さは等しくなければなりません。 maketrans(x [、y [、z]])に3番目のパラメーターzが指定されている場合、このパラメーター文字列の各文字はNoneにマップされます。
例えば:
in_str='abcxyz'
out_str='123456'
map_table=str.maketrans(in_str,out_str,'ar')
mylove='How are you'
result=mylove.translate(map_table)
print(result)
How e 5ou
6、 文字列分割操作
(1)トリプルに分割
str.partition(sep)
str.rpartition(sep)
文字列内のサブ文字列sepを検索し、文字列をsepから分割して、最後に3つの要素を含むタプルを返します。sepの左側はタプルの最初の要素であり、sep自体はタプルの2番目の要素です。要素、sepの右側は、タプルの3番目の要素です。
partition(sep)は左側の最初のsepから分割され、rpartition(sep)は右側の最初のsepから分割されます。
sepが見つからない場合、返される3要素タプルの2つの要素は空です。 partition()は最後の2つの要素が空であり、rpartition()は最初の2つの要素が空です。
例えば:
print('abcxyzxyzopq'.partition('xy'))
(' abc', 'xy', 'zxyzopq')
print('abcxyzxyzopq'.rpartition('xy'))
(' abcxyz', 'xy', 'zopq')
(2)文字列を分割してリストを生成する
str.split(sep=None, maxsplit=-1)
str.rsplit(sep=None, maxsplit=-1)
str.splitlines([keepends=True])
split()は文字列をsepに従って分割し、maxsplitは分割数を指定するために使用されます。maxsplitが指定されていないか、指定された値が「-1」の場合、左から右に検索し、検索が完了するまでsepに遭遇するたびに分割しますストリング。
sepを指定しない場合、またはNoneを指定する場合は、セグメンテーションアルゴリズムを変更します。スペースを区切り文字として使用し、連続するスペースを1つのスペースに圧縮します。
**rsplit()とsplit()は同じですが、右から左に検索します。 ****
**splitlines()は、特にnewlineを分割するために使用されます。 split( '\ n')やsplit( '\ r \ n')に少し似ていますが、違います。 ****
'1,2,3'. split(',')
['1', '2', '3']
'1,2,3'. split(',',1)
['1', '2,3'] # 1回だけ分割
'1,2,,3'. split(',')
['1', '2', '', '3'] # 連続するセパレーターを圧縮しません
'< hello><>
'.split('<')
['', ' hello>', '>', 'world>']
'< hello><>
'.split('<>')
['< hello>', '
'1 2 3'. split()#sepが指定されていない場合
['1', '2', '3']
'1 2 3'. split(maxsplit=1)
['1', '2 3']
' 1 2 3 '. split()
['1', '2', '3']
' 1 2 3 \ n'.split()
['1', '2', '3']
' 1 2 3 \ n'.split(' ')
['', '1', '', '2', '', '3', '', '\ n']
' 1 2 3 \ n'.split('\t')
[' 1 2 3 \ n']
' 1 2\ n3 \n'.split('\n')
[' 1 2', '3 ', ''] # リストの最後の項目に注意してください」
''. split('\n')
['']
' ab c\n\nde fg\rkl\r\n'.splitlines()
[' ab c', '', 'de fg', 'kl']
' ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
[' ab c\n', '\n', 'de fg\r', 'kl\r\n']
split()とsplitlines()を比較してください:
''. split('\n')
[''] # 分割するニューラインがないため
' One line\n'.split('\n')
[' One line', '']
"". splitlines()
[] # 分割するニューラインがないため
' Two lines\n'.splitlines()
[' Two lines']
7、 参加操作
str.join(iterable)
str文字列を使用して、反復可能オブジェクト(反復可能)内の文字列を連結します。
すべての反復可能オブジェクトは文字列タイプである必要があることに注意してください。そうでない場合、エラーが報告されます。
まだpythonの初心者で、反復可能性が何であるかわからないが、joinの特定の構文を確認したい場合は、一時的に次のように理解できます:文字列文字列、リストリスト、タプルタプル、辞書dict、セットセット。
例えば:
ストリング
X1='python'
'_'. join(X1)
' p_y_t_h_o_n'
タプル
X2=('1','2','3')
'_'. join(X2)
'1_2_3'
**セットする。 **コレクションが故障していることに注意してください。
X3={'p','y','t','h','o','n'}
'_'. join(X3)
' n_o_p_h_y_t'
リスト
X4=['py','th','o','n']
'_'. join(X4)
' py_th_o_n'
辞書
X5={'name':"malongshuai",'gender':'male','from':'China','age':18}
'_'. join(X5)
' name_gender_from_age'
反復に関与するiterableの部分は文字列タイプである必要があり、数値やその他のタイプを含めることはできません。
8、 トリミング操作
左側、右側、左側、右側のチャーを削除します。 charsが指定されていないか、Noneが指定されている場合、空白(スペース、タブ、ニューライン)はデフォルトで削除されます。
str.strip([chars])
str.lstrip([chars])
str.rstrip([chars])
注意すべき唯一のことは、charsは複数の文字のシーケンスである可能性があるということです。削除すると、このシーケンスのすべての文字が削除されます。
**例:単一の文字または空白を削除します。 ****
' abcde '.strip()
' abcde'
print('www.example.com'.lstrip('cmowz.'))
example.com
Recommended Posts