Python3 文字列
文字列は Python で最もよく使われるデータ型です。引用符(' 或 ")で文字列を作成します。
文字列の作成はとても簡単で、変数に値を代入するだけです。例:
Python で文字列の値にアクセスする
Python は単一文字型をサポートしていません。単一文字も Python では文字列として扱われます。
Python で部分文字列にアクセスするには、角括弧を使用して[]文字列を切り出します。文字列の切り出しの構文は次のとおりです。
変数[先頭インデックス:末尾インデックス]
インデックス値は0を開始値とし、-1は末尾からの開始位置です。

以下の例のとおりです。
例(Python 3.0+)
上記の例の実行結果:
var1[0]: H var2[1:5]: unoo
Python の文字列更新
文字列の一部を切り出して他のフィールドと連結することができます。以下の例のとおりです。
例(Python 3.0+)
上記の例の実行結果
已更新字符串 : Hello サンプル!
Python のエスケープ文字
文字に特殊文字を使用する必要がある場合、Python ではバックスラッシュを\エスケープ文字として使用します。次の表のとおりです。
| エスケープ文字 | 説明 | 例 |
|---|---|---|
| \(行末の場合) | 継続行記号 |
>>> print("line1 \
... line2 \
... line3")
line1 line2 line3
>>>
|
| \\ | バックスラッシュ記号 |
>>> print("\\")
\
|
| \' | シングルクォート |
>>> print('\'')
'
|
| \" | ダブルクォート |
>>> print("\"")
"
|
| \a | ベル |
>>> print("\a")実行するとパソコンが音を発します。 |
| \b | バックスペース |
>>> print("Hello \b World!")
Hello World!
|
| \000 | 空 |
>>> print("\000")
>>>
|
| \n | 改行 |
>>> print("\n")
>>>
|
| \v | 垂直タブ |
>>> print("Hello \v World!")
Hello
World!
>>>
|
| \t | 水平タブ |
>>> print("Hello \t World!")
Hello World!
>>>
|
| \r | 復帰、後続の内容を\r文字列の先頭に移動し、先頭部分の文字を一つずつ置き換え、最終的に\r後続の内容が完全に置き換わるまで。 |
>>> print("Hello\rWorld!")
World!
>>> print('google サンプル taobao\r123456')
123456 サンプル taobao
|
| \f | 改ページ |
>>> print("Hello \f World!")
Hello
World!
>>>
|
| \yyy | 8進数。y は 0〜7 の文字を表します。例: \012 は改行を表します。 |
>>> print("\110\145\154\154\157\40\127\157\162\154\144\41")
Hello World!
|
| \xyy | 16進数。\x で始まり、y は文字を表します。例: \x0a は改行を表します。 |
>>> print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")
Hello World!
|
| \other | その他の文字は通常の形式で出力します。 |
を使用して\r パーセント進捗を実現します:
例
for i in range(101): # プログレスバーの図形とパーセンテージを追加
bar = '[' + '=' * (i // 2) + ' ' * (50 - i // 2) + ']'
print(f"\r{bar} {i:3}%", end='', flush=True)
time.sleep(0.05)
print()
以下の例では、さまざまなエスケープ文字を使用して、シングルクォート、改行、タブ、バックスペース、改ページ、ASCII、2進数、8進数、16進数の効果を示しています。
例
print("Hello, world!\nHow are you?") # 出力:Hello, world!
# How are you?
print("Hello, world!\tHow are you?") # 出力:Hello, world! How are you?
print("Hello,\b world!") # 出力:Hello world!
print("Hello,\f world!") # 出力:
# Hello,
# world!
print("A に対応する ASCII 値は:", ord('A')) # 出力:A に対応する ASCII 値は: 65
print("\x41 は A の ASCII コードです") # 出力:A は A の ASCII コードです
decimal_number = 42
binary_number = bin(decimal_number) # 10進数を2進数に変換
print('2進数に変換:', binary_number) # 2進数に変換: 0b101010
octal_number = oct(decimal_number) # 10進数を8進数に変換
print('8進数に変換:', octal_number) # 8進数に変換: 0o52
hexadecimal_number = hex(decimal_number) # 10進数を16進数に変換
print('16進数に変換:', hexadecimal_number) # 16進数に変換: 0x2a
Python の文字列演算子
次の表の例では、変数 a の値は文字列 "Hello"、変数 b の値は "Python" です。
| 演算子 | 説明 | 例 |
|---|---|---|
| + | 文字列連結 | a + b の出力結果: HelloPython |
| * | 文字列を繰り返し出力 | a*2 の出力結果: HelloHello |
| [] | インデックスによる文字列内の文字の取得 | ae |
| [ : ] | 文字列の一部を切り出します。左閉右開の原則により、str[0:2] は3番目の文字を含みません。 | a[1:4] の出力結果ell |
| in | メンバー演算子 - 文字列が指定された文字を含む場合に True を返す | 'H' in a出力結果 True |
| not in | メンバー演算子 - 文字列が指定された文字を含まない場合に True を返す | 'M' not in a出力結果 True |
| r/R | 生文字列 - 生文字列: すべての文字列は文字どおりの意味で直接使用され、特殊文字や印刷できない文字をエスケープすることはありません。 生文字列は、文字列の最初の引用符の前に文字を付けることを除いて、r(大文字小文字は問いません)を除き、通常の文字列とほぼ完全に同じ構文です。 | print( r'\n' ) print( R'\n' ) |
| % | フォーマット文字列 | 次のセクションを参照してください。 |
例(Python 3.0+)
上記の例の出力結果は次のとおりです。
a + b 输出结果: HelloPython a * 2 输出结果: HelloHello a[1] 输出结果: e a[1:4] 输出结果: ell H 在变量 a 中 M 不在变量 a 中 \n \n
Python の文字列フォーマット
Python はフォーマット済み文字列の出力をサポートしています。非常に複雑な式を使うこともありますが、最も基本的な使い方は、文字列フォーマット指定子 %s を含む文字列に値を挿入することです。
Python では、文字列フォーマットは C の sprintf 関数と同じ構文を使用します。
例(Python 3.0+)
上記の例の出力結果:
我叫 小明 今年 10 岁!
python 文字列フォーマット指定子:
| 記号 | 説明 |
|---|---|
| %c | 文字とそのASCIIコードをフォーマット |
| %s | 文字列をフォーマット |
| %d | 整数をフォーマット |
| %u | 符号なし整数をフォーマット |
| %o | 符号なし8進数をフォーマット |
| %x | 符号なし16進数をフォーマット |
| %X | 符号なし16進数(大文字)をフォーマット |
| %f | 浮動小数点数をフォーマットし、小数点以下の精度を指定できます |
| %e | 科学的記数法で浮動小数点数をフォーマット |
| %E | %e と同じ働きで、科学的記数法で浮動小数点数をフォーマット |
| %g | %f と %e の省略形 |
| %G | %f と %E の省略形 |
| %p | 変数のアドレスを16進数でフォーマット |
フォーマット演算子の補助指令:
| 記号 | 機能 |
|---|---|
| * | 幅または小数点精度を定義 |
| - | 左揃えに使用 |
| + | 正の数の前にプラス記号( + )を表示 |
| <sp> | 正の数の前に空白を表示 |
| # | 8進数の前にゼロ('0')を表示し、16進数の前に'0x'または'0X'を表示します('x'か'X'かによって異なります) |
| 0 | 表示される数字の前に、デフォルトの空白ではなく'0'を埋めます |
| % | '%%' は単一の'%'を出力します |
| (var) | 変数のマッピング(辞書パラメータ) |
| m.n. | m は表示される最小の全体幅で、n は小数点以下の桁数(利用可能な場合)です。 |
Python2.6 から、新しい文字列フォーマット関数が追加されました。str.format()これは文字列フォーマットの機能を強化します。
Python のトリプルクォート
Python のトリプルクォートを使用すると、文字列を複数行にわたって記述でき、改行、タブ、その他の特殊文字を含めることができます。例は次のとおりです。
例(Python 3.0+)
上記の例の実行結果は次のとおりです:
这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( )。 也可以使用换行符 [ ]。
トリプルクォートは、プログラマーを引用符や特殊文字の泥沼から解放し、常に小さな文字列ブロックをそのままの形式で保持できる、いわゆるWYSIWYG(見たままが得られる)形式です。
典型的な使用例としては、HTML または SQL の一塊が必要な場合です。このとき、文字列の組み合わせや特殊文字のエスケープは非常に煩雑になります。
f-string
f-string は python3.6 以降のバージョンで追加されたもので、リテラルフォーマット文字列と呼ばれ、新しい文字列フォーマットの構文です。
以前はパーセント記号 (%) を使うのが慣例でした:
例
>>> 'Hello %s' % name
'Hello サンプル'
f-stringフォーマット文字列はf先頭の文字で始まり、その後に文字列が続きます。文字列内の式は波括弧 {} で囲み、変数や式を計算した値に置き換えます。例は次のとおりです:
例
>>> f'Hello {name}' # 変数を置換
'Hello サンプル'
>>> f'{1+2}' # 式を使用
'3'
>>> w = {'name': 'サンプル', 'url': 'www.example.com'}
>>> f'{w["name"]}: {w["url"]}'
'サンプル: www.example.com'
この方法を使うと明らかに簡単になり、%s を使うか %d を使うかを判断する必要がなくなります。
Python 3.8 のバージョンでは、=記号を使用して演算式と結果を連結できます:
例
>>> print(f'{x+1}') # Python 3.6
2
>>> x = 1
>>> print(f'{x+1=}') # Python 3.8
x+1=2
Unicode 文字列
Python2 では、通常の文字列は8ビットASCIIコードで格納され、Unicode文字列は16ビットUnicode文字列として格納されるため、より多くの文字セットを表すことができます。使用する構文は、文字列の前にプレフィックスを付けることです。u。
Python3 では、すべての文字列はUnicode文字列です。
Python の文字列組み込み関数
Python の文字列でよく使われる組み込み関数は次のとおりです:
| 番号 | メソッドと説明 |
|---|---|
| 1 | capitalize() |
| 2 | 指定された幅 width で中央揃えされた文字列を返します。fillchar は埋める文字で、デフォルトはスペースです。 |
| 3 | count(str, beg= 0,end=len(string)) string 内で str が出現する回数を返します。beg または end を指定すると、指定範囲内で str が出現する回数を返します。 |
| 4 | bytes.decode(encoding="utf-8", errors="strict") Python3 には decode メソッドはありませんが、bytes オブジェクトの decode() メソッドを使用して、指定された bytes オブジェクトをデコードできます。この bytes オブジェクトは str.encode() でエンコードして取得できます。 |
| 5 | encode(encoding='UTF-8',errors='strict') encoding で指定されたエンコード形式で文字列をエンコードします。エラーが発生した場合、デフォルトでは ValueError 例外が発生します。ただし、errors に 'ignore' または 'replace' が指定されている場合は除きます。 |
| 6 | endswith(suffix, beg=0, end=len(string)) |
| 7 | 文字列 string 内のタブ記号をスペースに変換します。タブ記号のデフォルトのスペース数は 8 です。 |
| 8 | find(str, beg=0, end=len(string)) str が文字列に含まれているかどうかを検出します。範囲 beg と end を指定すると、指定範囲内に含まれているかを確認し、含まれていれば開始インデックス値を返し、そうでなければ -1 を返します。 |
| 9 | index(str, beg=0, end=len(string)) find() メソッドと同じですが、str が文字列内にない場合に例外を発生させます。 |
| 10 | 文字列が英数字で構成されているかどうかを確認します。つまり、文字列内のすべての文字が英字または数字であるかどうかです。文字列に少なくとも1文字あり、すべての文字が英字または数字である場合は True を返し、それ以外の場合は False を返します。 |
| 11 | 文字列に少なくとも1文字あり、すべての文字が英字または中国語の文字である場合は True を返し、 それ以外の場合は False を返します。 |
| 12 | 文字列が数字のみを含む場合は True を返し、そうでなければ False を返します。 |
| 13 | 文字列に少なくとも1つの大文字と小文字を区別する文字が含まれており、それらすべての(大文字と小文字を区別する)文字が小文字である場合は True を返し、そうでなければ False を返します。 |
| 14 | 文字列が数字文字のみを含む場合は True を返し、そうでなければ False を返します。 |
| 15 | 文字列が空白のみを含む場合は True を返し、そうでなければ False を返します。 |
| 16 | 文字列がタイトルケース化されている場合(title() を参照)は True を返し、そうでなければ False を返します。 |
| 17 | 文字列に少なくとも1つの大文字と小文字を区別する文字が含まれており、それらすべての(大文字と小文字を区別する)文字が大文字である場合は True を返し、そうでなければ False を返します。 |
| 18 | 指定された文字列を区切り文字として、seq 内のすべての要素(の文字列表現)を連結して新しい文字列にします。 |
| 19 | 文字列の長さを返します。 |
| 20 | 元の文字列を左寄せにし、fillchar を使用して長さ width まで埋めた新しい文字列を返します。fillchar のデフォルトはスペースです。 |
| 21 | 文字列内のすべての大文字を小文字に変換します。 |
| 22 | 文字列の左側のスペースまたは指定された文字を削除します。 |
| 23 | 文字マッピングの変換テーブルを作成します。2つの引数を受け取る最も簡単な呼び出し方では、最初の引数は変換する文字を表す文字列、2番目の引数も変換先を表す文字列です。 |
| 24 | 文字列 str の中で最大の文字を返します。 |
| 25 | 文字列 str の中で最小の文字を返します。 |
| 26 | 文字列内の old を new に置き換えます。max が指定されている場合は、置き換えは max 回を超えません。 |
| 27 | rfind(str, beg=0,end=len(string)) find() 関数に似ていますが、右側から検索を開始します。 |
| 28 | rindex( str, beg=0, end=len(string)) index() に似ていますが、右側から始めます。 |
| 29 | 元の文字列を右寄せにし、fillchar(デフォルトはスペース)を使用して長さ width まで埋めた新しい文字列を返します。 |
| 30 | 文字列の末尾のスペースまたは指定された文字を削除します。 |
| 31 | split(str="", num=string.count(str)) str を区切り文字として文字列を分割します。num に指定値がある場合は、num+1 個の部分文字列のみを切り出します。 |
| 32 | 行('\r', '\r\n', \n')で分割し、各行を要素として含むリストを返します。引数 keepends が False の場合は改行文字を含めず、True の場合は改行文字を保持します。 |
| 33 | startswith(substr, beg=0,end=len(string)) 文字列が指定された部分文字列 substr で始まるかどうかを確認し、そうであれば True を返し、そうでなければ False を返します。beg と end の指定値がある場合は、指定範囲内で確認します。 |
| 34 | 文字列に対して lstrip() と rstrip() を実行します。 |
| 35 | 文字列内の大文字を小文字に、小文字を大文字に変換します。 |
| 36 | 「タイトルケース化」された文字列を返します。つまり、すべての単語が大文字で始まり、残りの文字は小文字です(istitle() を参照)。 |
| 37 | translate(table, deletechars="") table で指定されたテーブル(256 文字を含む)に基づいて string の文字を変換します。 フィルタリングして除外する文字は deletechars パラメータに指定します。 |
| 38 | 文字列内の小文字を大文字に変換します。 |
| 39 | 長さ width の文字列を返します。元の文字列は右寄せで、前を 0 で埋めます。 |
| 40 | 文字列が10進文字のみを含むかどうかを確認し、そうであれば true を返し、そうでなければ false を返します。 |