文字列は、Pythonで最も一般的に使用されるデータ型です。 引用符( ‘または “)を使用して文字列を作成できます。
文字列の作成は簡単で、変数に値を割り当てるだけです。 例えば:
var1 = 'Hello World!'
var2 = "ceodata"
Python文字列内の値をアクセスする。
Pythonは単一文字列をサポートしておらず、Pythonでは単一文字も文字列として使用されます。
Pythonでは、子文字列へのアクセスでは、角括弧[]を使用して文字列をスライスできます。文字列のスライスの構文形式は次のとおりです。
変数[検索開始:検索終了]
検索値は0から始まり、-1は最後からの開始位置です。
以下の実例が示した通りです。
実例(Python 3.0以降)
#!/usr/bin/python3
var1 = 'Hello World!'
var2 = "Ceodata"
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])
上記の実例の実行結果:
var1[0]: H
var2[1:5]: eoda
>
目次
Python文字列の更新
次の例のように、文字列の一部をスライスして、他のフィールドとスプライスできます。
実例(Python 3.0以降)
#!/usr/bin/python3
var1 = 'Hello World!'
print ("更新された文字列 : ", var1[:6] + 'Ceodata!')
上記の実例の実行結果:
更新された文字列:Hello Ceodata!
Pythonエスケープ文字
文字列に特殊文字を使用する必要がある場合、Pythonはバックスラッシュ\を使用して文字をエスケープします。 次の表をご覧ください。
エスケープ文字 | 説明 | 実例 |
\ (行の最後にある場合) | 改行子 | >>> print(“line1 \ … line2 \ … line3″) line1 line2 line3 >>> |
\\ | バックスラッシュ | >>>print(“\\”) \ |
\’ | 一重引用符 | >>>print(‘\”) ‘ |
\” | 二重引用符 | >>>print(“\””) “ |
\a | ベル | >>>print(“\a”) 実行後、コンピュータはベルを鳴らす。 |
\b | バックスペース(Backspace) | >>>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 | Enterキーを押して、\ rの後のコンテンツを文字列の先頭に移動し、\ rの後のコンテンツが完全に置き換えられるまで、先頭の文字を1つずつ置き換える。 | >>>print(“Hello\rWorld!”) World! >>>print(‘google yahoo ceodata\r123456’) 123456 yahoo ceodata |
\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 | その他の文字は通常の形式で出力される。 |
Python文字列演算子
次の表では、変数aの値は文字列「Hello」であり、b変数の値は「Python」です。
演算子 | 説明 | 実例 |
+ | 文字列の接続 | a + b出力結果: HelloPython |
* | 文字列を繰り返して出力する | a * 2出力結果: HelloHello |
[] | 文字列内の文字を検索で取得する | a [1]出力結果: e |
[ : ] | 文字列の一部をスライスするには、左が閉じ右開きの原則に従います。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以降)
#!/usr/bin/python3
a = "Hello"
b = "Python"
print("a + b の出力結果は", a + b)
print("a * 2 の出力結果は", a * 2)
print("a[1] の出力結果は", a[1])
print("a[1:4] の出力結果は", a[1:4])
if( "H" in a) :
print("H は変数 a の中にある")
else :
print("H は変数 a の中にない")
if( "M" not in a) :
print("M は変数 a の中にない")
else :
print("M は変数 a の中にある")
print (r'\n')
print (R'\n')
上記の実例の出力は次のとおりです。
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以降)
#!/usr/bin/python3
print ("私は %s です。今年は %d 才です!" % ('田中', 10))
上記の実例の出力結果:
私は 田中 です。今年は 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以降)
#!/usr/bin/python3
para_str = """これは複数行の文字列の例である。
複数行の文字列はタブ記号TAB ( \t )を使用できる。
改行記号[\ n]を使用することもできる。
"""
print (para_str)
上記の例の実行結果は次のとおりです。
これは複数行の文字列の例である。
複数行の文字列はタブ記号TAB ( )を使用できる。
改行記号[\ n]を使用することもできる。
三重引用符は、プログラマーを引用符や特別な文字列の泥沼から解放し、一部の文字列形式を見た目のまま(What You See Is What You Get)にする必要があります。
典型的なケースは、HTMLまたはSQLの一部が必要な場合、文字列の組み合わせを使用すべきです。特別な文字列エスケープを使用すると非常に面倒です。
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
f-string
f-stringはpython3.6からに追加されました。これはフォーマット済文字列リテラルと呼ばれ、新しいフォーマット文字列構文です。
以前はパーセント記号(%)を使用していました。
実例
>>> name = 'Ceodata'
>>> 'Hello %s' % name
'Hello Ceodata'
f-string形式の文字列はfで始まり、その後に文字列が続きます。文字列内の式は中括弧{}で囲まれ、変数または式の計算値が置き換えられます。例は次のとおりです。
実例
>>> name = 'Ceodata'
>>> f'Hello {name}' # 変数を置き換える
'Hello Ceodata'
>>> f'{1+2}' # 表現式を使用する
'3'
>>> w = {'name': 'FlorianStudio', 'url': 'www.ceodata.com'}
>>> f'{w["name"]}: {w["url"]}'
'FlorianStudio: www.ceodata.com'
このようにすれば、明らかに簡単になり、%sまたは%dのどちらを使用するかを判断する必要はありません。
Python 3.8では、=記号を使用して、式と結果を連結できます。
実例
>>> x = 1
>>> 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文字列は16Unicode文字列として格納され、より多くの文字セットを表すことができます。 使用される構文は、文字列の前にuを付けることです。
Python3では、すべての文字列はUnicode文字列です。
Pythonの文字列組み込み関数
Python文字列の一般的に使用される組み込み関数は次のとおりです。
番号 | 方法と説明 |
1 | capitalize() 文字列の最初の文字を大文字に変換する。 |
2 | center(width, fillchar) widthは中央にある指定された幅の文字列を返し、fillcharは塗りつぶされた文字であり、デフォルトはスペースである。 |
3 | count(str, beg= 0,end=len(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で指定されたエンコード形式で文字列をエンコードする。エラーが発生した場合、エラーが「ignore」または「replace」で指定されていない限り、ValueErrorがデフォルトで報告される。 |
6 | endswith(suffix, beg=0, end=len(string)) 文字列がobjで終わるかどうかを確認し、begまたはendが指定されている場合は、指定された範囲がobjで終わるかどうかを確認する。はいの場合はTrueを返し、そうでない場合はFalseを返す。 |
7 | expandtabs(tabsize=8) 文字列内のタブ(tab)記号をスペースに変換し、タブ記号のデフォルトのスペース数は8である。 |
8 | find(str, beg=0, end=len(string)) strが文字列に含まれているかどうかを確認し、範囲begとendが指定されている場合は、指定された範囲に含まれているかどうかを確認する。含まれている場合は開始インデックス値を返し、そうでない場合は-1を返す。 |
9 | index(str, beg=0, end=len(string)) strが文字列にない場合、例外が報告されることを除いて、ほかはfind()メソッドと同じである。 |
10 | isalnum() 文字列に少なくとも1つの文字があり、すべての文字が文字または数字の場合はTrueを返し、そうでない場合はFalseを返す。 |
11 | isalpha() 文字列に少なくとも1つの文字があり、すべての文字が文字または数字の場合はTrueを返し、そうでない場合はFalseを返す。 |
12 | isdigit() 文字列に数字のみが含まれている場合はTrueを返し、そうでない場合はFalseを返す。 |
13 | islower() 文字列に大文字と小文字が区別される文字が少なくとも1つ含まれていて、これらの(大文字と小文字が区別される)文字がすべて小文字の場合はTrueを返し、そうでない場合はFalseを返す。 |
14 | isnumeric() 文字列に数字のみが含まれている場合はTrueを返し、そうでない場合はFalseを返す。 |
15 | isspace() 文字列に空白のみが含まれている場合はTrueを返し、そうでない場合はFalseを返す。 |
16 | istitle() 文字列にタイトルが付いている場合(title()を参照)、Trueを返し、そうでない場合はFalseを返す。 |
17 | isupper() 文字列に大文字と小文字が区別される文字が少なくとも1つ含まれていて、これらの(大文字と小文字が区別される)文字がすべて大文字の場合はTrueを返し、そうでない場合はFalseを返す。 |
18 | join(seq) 指定された文字列を区切り記号として使用して、seq内のすべての要素(文字列表現)を新しい文字列にマージする。 |
19 | len(string) 文字列の長さを返す |
20 | ljust(width[, fillchar]) 元の文字列を左揃えにして、fillcharで長さがwidthの新しい文字列を返し、fillcharはデフォルトでスペースである。 |
21 | lower() 文字列内のすべての大文字を小文字に変換する。 |
22 | lstrip() 文字列の左側にあるスペースまたは指定された文字を切り捨てる。 |
23 | maketrans() 文字マッピング用の変換テーブルを作成する。2つの引数を受け入れる最も単純な呼び出しメソッドは、最初の引数は変換される文字を表す文字列であり、2番目の引数は変換のターゲットを表す文字列である。 |
24 | max(str) 文字列strの最大の文字を返す。 |
25 | min(str) 文字列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]) 右揃えの元の文字列を返す。そして、fillcharを使用して(デフォルトではスペース)長さがwidthの新しい文字列を埋める。 |
30 | rstrip() 文字列の最後のスペースを削除する。 |
31 | split(str=””, num=string.count(str)) strを区切り記号として、文字列をスライスする。numに指定された値がある場合、num +1個のサブ文字列のみがスライスされる。 |
32 | splitlines([keepends]) 行( ‘\ r’、 ‘\ r \ n’、\ n ‘)で区切り、各行を要素として含むリストを返す。引数keependsがFalseの場合、改行記号は含まれない。Trueの場合は、改行文字が保留される。 |
33 | startswith(substr, beg=0,end=len(string)) 文字列が指定された部分文字列substrで始まるかどうかを確認し、はいの場合はTrueを返し、そうでない場合はFalseを返す。 begとendで値を指定する場合は、指定した範囲内で確認する。 |
34 | strip([chars]) 文字列でlstrip()とrstrip()を実行する。 |
35 | swapcase() 文字列内で大文字を小文字に変換し、小文字を大文字に変換する。 |
36 | title() 「titled」文字列を返す。これは、すべての単語が大文字で始まり、残りの文字が小文字であることを意味する(istitle()を参照)。 |
37 | translate(table, deletechars=””) strで指定されたテーブル(256文字を含む)に従って文字列の文字を変換し、フィルターする文字をdeletechars引数に入れる。 |
38 | upper() 文字列内の小文字を大文字に変換する |
39 | zfill (width) 長さがwidth の文字列を返す。元の文字列は右揃えで、前面は0で埋められる。 |
40 | isdecimal() 文字列に10進文字のみが含まれているかどうかを確認し、10進文字のみが含まれている場合はtrueを返し、そうでない場合はfalseを返す。 |
コメントを残す