Python-文字列
前のページ次のページ
文字列は、Python で最も人気のある型の 1 つです。文字を引用符で囲むだけで作成できます。 Python は、一重引用符を二重引用符と同じように扱います。文字列の作成は、変数に値を代入するのと同じくらい簡単です。たとえば-
var1 = 'Hello World!' var2 = "Python Programming"
文字列の値へのアクセス
Python は文字型をサポートしていません。これらは長さ 1 の文字列として扱われるため、部分文字列とも見なされます。
部分文字列にアクセスするには、スライスに角かっこを使用し、インデックスまたはインデックスと共に部分文字列を取得します。たとえば-
ライブデモ#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Programming" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
上記のコードが実行されると、次の結果が生成されます-
var1[0]: H var2[1:5]: ytho
文字列の更新
変数を別の文字列に (再) 割り当てて、既存の文字列を「更新」できます。新しい値は、以前の値に関連付けることも、まったく異なる文字列に関連付けることもできます。たとえば-
ライブデモ#!/usr/bin/python var1 = 'Hello World!' print "Updated String :- ", var1[:6] + 'Python'
上記のコードが実行されると、次の結果が生成されます-
Updated String :- Hello Python
エスケープ文字
次の表は、バックスラッシュ表記で表すことができるエスケープ文字または印刷不能文字のリストです。
エスケープ文字は解釈されます。
バックスラッシュ表記 | 16 進文字 | 説明 |
---|---|---|
\a | 0x07 | ベルまたはアラート |
\b | 0x08 | バックスペース |
\cx | Control-x | |
\C-x | Control-x | |
\e | 0x1b | 逃げる |
\f | 0x0c | フォームフィード |
\M-\C-x | Meta-Control-x | |
\n | 0x0a | 改行 |
\nnn | 8 進数、n は 0.7 の範囲 | |
\r | 0x0d | キャリッジ リターン |
\s | 0x20 | スペース |
\t | 0x09 | タブ |
\v | 0x0b | 垂直タブ |
\x | キャラクター x | |
\xnn | 16 進表記。n は 0.9、a.f、または A.F の範囲です |
文字列特殊演算子
文字列変数 a を想定 「Hello」と変数 b を保持 'Python' を保持している場合 −
演算子 | 説明 | 例 |
---|---|---|
+ | 連結 - 演算子の両側に値を追加します | a + b は HelloPython を返します |
* | 繰り返し - 新しい文字列を作成し、同じ文字列の複数のコピーを連結します | a*2 は -HelloHello を返します |
[] | Slice - 指定されたインデックスから文字を取得します | a[1] は e を返します |
[ :] | Range Slice - 指定された範囲の文字を提供します | a[1:4] は ell を返します |
で | Membership - 指定された文字列に文字が存在する場合に true を返します | H in a は 1 を与える |
不参加 | Membership - 指定された文字列に文字が存在しない場合は true を返します | M not in a will 1 |
r/R | Raw String - エスケープ文字の実際の意味を抑制します。生の文字列の構文は、引用符の前にある生の文字列演算子 (文字 "r") を除いて、通常の文字列とまったく同じです。 "r" は小文字 (r) または大文字 (R) にすることができ、最初の引用符の直前に配置する必要があります。 | print r'\n' プリント \n および print R'\n'prints \n |
% | Format - 文字列のフォーマットを実行します | 次のセクションを参照 |
文字列整形演算子
Python の最も優れた機能の 1 つは、文字列書式演算子 %.この演算子は文字列に固有であり、C の printf() ファミリーの関数を持つパックを補います。以下は簡単な例です-
ライブデモ#!/usr/bin/python print "My name is %s and weight is %d kg!" % ('Zara', 21)
上記のコードが実行されると、次の結果が生成されます-
My name is Zara and weight is 21 kg!
% とともに使用できる記号の完全なセットのリストを次に示します −
書式記号 | 変換 |
---|---|
%c | キャラクター |
%s | フォーマット前の str() による文字列変換 |
%i | 符号付き 10 進整数 |
%d | 符号付き 10 進整数 |
%u | 符号なし 10 進整数 |
%o | 8 進整数 |
%x | 16 進整数 (小文字) |
%X | 16 進整数 (大文字) |
%e | 指数表記 (小文字の 'e') |
%E | 指数表記 (大文字の「E」を使用) |
%f | 浮動小数点実数 |
%g | %f と %e の短い方 |
%G | %f と %E の短い方 |
サポートされているその他のシンボルと機能を次の表に示します −
シンボル | 機能 |
---|---|
* | 幅または精度を指定する引数 |
- | 左寄せ |
+ | 標識を表示 |
正の数の前に空白を残す | |
# | 「x」または「X」のどちらが使用されたかに応じて、8 進数の先行ゼロ (「0」) または 16 進数の先行「0x」または「0X」を追加します。 |
0 | 左から (スペースの代わりに) ゼロを埋め込む |
% | '%%' は単一のリテラル '%' を残します |
(var) | マッピング変数 (辞書の引数) |
分 | m は最小合計幅、n は小数点以下の表示桁数 (適用する場合) |
三重引用符
Python の三重引用符は、逐語的な NEWLINE、TAB、およびその他の特殊文字を含め、文字列が複数行にまたがることを可能にすることで助けになります。
三重引用符の構文は、3 つの連続した 一重または二重 で構成されます
ライブデモ#!/usr/bin/python para_str = """this is a long string that is made up of several lines and non-printable characters such as TAB ( \t ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up. """ print para_str
上記のコードを実行すると、次の結果が生成されます。 「up」の間の文字列の末尾にある最後の NEWLINE まで、すべての特殊文字が印刷された形式に変換されていることに注意してください。三重引用符を閉じます。また、NEWLINE は、行末の明示的なキャリッジ リターンまたはそのエスケープ コード (\n) のいずれかで発生することに注意してください −
this is a long string that is made up of several lines and non-printable characters such as TAB ( ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ ], or just a NEWLINE within the variable assignment will also show up.
生の文字列はバックスラッシュを特殊文字としてまったく扱いません。生の文字列に入れるすべての文字は、書いたままです −
ライブデモ#!/usr/bin/python print 'C:\\nowhere'
上記のコードが実行されると、次の結果が生成されます-
C:\nowhere
それでは、生の文字列を利用しましょう。 r'expression' に式を入れます 次のように-
ライブデモ#!/usr/bin/python print r'C:\\nowhere'
上記のコードが実行されると、次の結果が生成されます-
C:\\nowhere
ユニコード文字列
Python の通常の文字列は 8 ビット ASCII として内部的に保存されますが、Unicode 文字列は 16 ビット Unicode として保存されます。これにより、世界中のほとんどの言語の特殊文字を含む、より多様な文字セットが可能になります。 Unicode 文字列の扱いを次のように制限します −
ライブデモ#!/usr/bin/python print u'Hello, world!'
上記のコードが実行されると、次の結果が生成されます-
Hello, world!
ご覧のとおり、生の文字列がプレフィックス r を使用するのと同様に、Unicode 文字列はプレフィックス u を使用します。
組み込みの文字列メソッド
Pythonには、文字列を操作するための次の組み込みメソッドが含まれています-
Sr.No. | 説明付きのメソッド |
---|---|
1 | 大文字にする() 文字列の最初の文字を大文字にします |
2 | center(幅, fillchar) 元の文字列が幅列の合計の中央に配置された、スペースが埋め込まれた文字列を返します。 |
3 | count(str, beg=0,end=len(string)) 開始インデックス beg と終了インデックス end が指定されている場合、文字列または文字列の部分文字列で str が出現する回数をカウントします。 |
4 | decode(encoding='UTF-8',errors='strict') エンコード用に登録されたコーデックを使用して文字列をデコードします。 encoding のデフォルトは、デフォルトの文字列エンコーディングです。 |
5 | encode(encoding='UTF-8',errors='strict') 文字列のエンコードされた文字列バージョンを返します。エラーが発生した場合、'ignore' または 'replace' でエラーが発生しない限り、デフォルトでは ValueError が発生します。 |
6 | endswith(suffix, beg=0, end=len(string)) 文字列または文字列の部分文字列 (開始インデックス beg と終了インデックス end が指定されている場合) が接尾辞で終わるかどうかを決定します。そうであれば true を返し、そうでなければ false を返します。 |
7 | expandtabs(tabsize=8) 文字列内のタブを複数のスペースに展開します。 tabsize が指定されていない場合、デフォルトでタブあたり 8 スペースになります。 |
8 | find(str, beg=0 end=len(string)) 開始インデックス beg と終了インデックス end が指定されている場合、str が文字列または文字列の部分文字列のどちらに出現するかを判断します。見つかった場合は index を返し、そうでない場合は -1 を返します。 |
9 | index(str, beg=0, end=len(string)) find() と同じですが、str が見つからない場合は例外が発生します。 |
10 | isalnum() 文字列に少なくとも 1 文字が含まれ、すべての文字が英数字の場合は true を返し、それ以外の場合は false を返します。 |
11 | isalpha() 文字列に少なくとも 1 文字が含まれ、すべての文字がアルファベットである場合は true を返し、それ以外の場合は false を返します。 |
12 | isdigit() 文字列に数字のみが含まれる場合は true を返し、それ以外の場合は false を返します。 |
13 | islower() 文字列に大文字と小文字が区別された文字が 1 つ以上あり、大文字と小文字が区別されたすべての文字が小文字の場合は true を返し、それ以外の場合は false を返します。 |
14 | isnumeric() Unicode 文字列に数字のみが含まれる場合は true を返し、それ以外の場合は false を返します。 |
15 | isspace() 文字列に空白文字のみが含まれる場合は true を返し、それ以外の場合は false を返します。 |
16 | istitle() 文字列が適切に「タイトルケース化」されている場合は true を返し、そうでない場合は false を返します。 |
17 | isuper() 文字列に大文字と小文字が区別される文字が少なくとも 1 つ含まれ、大文字と小文字が区別されるすべての文字が大文字の場合は true を返し、それ以外の場合は false を返します。 |
18 | join(seq) シーケンス seq 内の要素の文字列表現を、区切り文字列を使用して文字列にマージ (連結) します。 |
19 | len(文字列) 文字列の長さを返します |
20 | ljust(width[, fillchar]) 元の文字列を合計幅列に合わせて左揃えにした、スペースが埋め込まれた文字列を返します。 |
21 | lower() 文字列内のすべての大文字を小文字に変換します。 |
22 | lstrip() 文字列の先頭の空白をすべて削除します。 |
23 | maketrans() 翻訳機能で使用する翻訳テーブルを返します。 |
24 | max(str) 文字列 str から最大のアルファベット文字を返します。 |
25 | 分(文字列) 文字列 str から最小のアルファベット文字を返します。 |
26 | replace(old, new [, max]) 文字列内のすべての old を new に置換するか、max が指定されている場合は最大で max 個の出現を置き換えます。 |
27 | rfind(str, beg=0,end=len(string)) find() と同じですが、文字列を逆方向に検索します。 |
28 | rindex( str, beg=0, end=len(string)) index() と同じですが、文字列を逆方向に検索します。 |
29 | rjust(width,[, fillchar]) 元の文字列を合計 width 列に右寄せした、スペースが埋め込まれた文字列を返します。 |
30 | rstrip() 文字列の末尾の空白をすべて削除します。 |
31 | split(str="", num=string.count(str)) 区切り文字 str (指定されていない場合はスペース) に従って文字列を分割し、部分文字列のリストを返します。指定された場合、最大 num 個の部分文字列に分割されます。 |
32 | splitlines( num=string.count('\n')) 文字列をすべて (または num) 個の NEWLINE で分割し、NEWLINE を削除した各行のリストを返します。 |
33 | startswith(str, beg=0,end=len(string)) 文字列または文字列の部分文字列 (開始インデックス be と終了インデックス end が指定されている場合) が部分文字列 str で始まるかどうかを判断します。そうであれば true を返し、そうでなければ false を返します。 |
34 | strip([chars]) 文字列に対して lstrip() と rstrip() の両方を実行します。 |
35 | swapcase() 文字列内のすべての文字の大文字と小文字を反転します。 |
36 | タイトル() 文字列の「タイトルケース」バージョンを返します。つまり、すべての単語は大文字で始まり、残りは小文字です。 |
37 | translate(table, deletechars="") 変換テーブル str(256 文字) に従って文字列を変換し、del 文字列内のものを削除します。 |
38 | upper() 文字列の小文字を大文字に変換します。 |
39 | zfill (幅) width 文字の合計までゼロで左詰めされた元の文字列を返します。数値を対象としているため、zfill() は与えられた符号を保持します (1 つゼロを除く)。 |
40 | isdecimal() Unicode 文字列に 10 進文字のみが含まれる場合は true を返し、それ以外の場合は false を返します。 |
Python