Python 3文字列

文字列は、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!
>>>
\rEnterキーを押して、\ rの後のコンテンツを文字列の先頭に移動し、\ rの後のコンテンツが完全に置き換えられるまで、先頭の文字を1つずつ置き換える。>>>print(“Hello\rWorld!”)
World!
>>>print(‘google yahoo ceodata\r123456’)
123456 yahoo ceodata
\fページを変更>>>print(“Hello \f World!”)
Hello
World!
>>>
\yyy8進数、yは0から7までの文字を表す。例:\ 012は改行を表す。>>>print(“\110\145\154\154\157\40\127\157\162\154\144\41”)
Hello World!
\xyy16進数、\ 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文字列の一般的に使用される組み込み関数は次のとおりです。

番号方法と説明
1capitalize()

文字列の最初の文字を大文字に変換する。
2center(width, fillchar)

widthは中央にある指定された幅の文字列を返し、fillcharは塗りつぶされた文字であり、デフォルトはスペースである。
3count(str, beg= 0,end=len(string))

文字列内のstrの出現回数を返す。begまたはendが指定されている場合は、指定された範囲内のstrの出現回数を返す。
4bytes.decode(encoding=”utf-8″, errors=”strict”)

Python3にはdecodeメソッドはありませんが、bytesオブジェクトのdecode()メソッドを使用して、指定されているbytesオブジェクトをデコードします。このbytesオブジェクトはstr.encode()でエンコードして返すことができる。
5encode(encoding=’UTF-8′,errors=’strict’)

encodingで指定されたエンコード形式で文字列をエンコードする。エラーが発生した場合、エラーが「ignore」または「replace」で指定されていない限り、ValueErrorがデフォルトで報告される。
6endswith(suffix, beg=0, end=len(string))

文字列がobjで終わるかどうかを確認し、begまたはendが指定されている場合は、指定された範囲がobjで終わるかどうかを確認する。はいの場合はTrueを返し、そうでない場合はFalseを返す。
7expandtabs(tabsize=8)

文字列内のタブ(tab)記号をスペースに変換し、タブ記号のデフォルトのスペース数は8である。
8find(str, beg=0, end=len(string))

strが文字列に含まれているかどうかを確認し、範囲begとendが指定されている場合は、指定された範囲に含まれているかどうかを確認する。含まれている場合は開始インデックス値を返し、そうでない場合は-1を返す。
9index(str, beg=0, end=len(string))

strが文字列にない場合、例外が報告されることを除いて、ほかはfind()メソッドと同じである。
10isalnum()

文字列に少なくとも1つの文字があり、すべての文字が文字または数字の場合はTrueを返し、そうでない場合はFalseを返す。
11isalpha()

文字列に少なくとも1つの文字があり、すべての文字が文字または数字の場合はTrueを返し、そうでない場合はFalseを返す。
12isdigit()

文字列に数字のみが含まれている場合はTrueを返し、そうでない場合はFalseを返す。
13islower()

文字列に大文字と小文字が区別される文字が少なくとも1つ含まれていて、これらの(大文字と小文字が区別される)文字がすべて小文字の場合はTrueを返し、そうでない場合はFalseを返す。
14isnumeric()

文字列に数字のみが含まれている場合はTrueを返し、そうでない場合はFalseを返す。
15isspace()

文字列に空白のみが含まれている場合はTrueを返し、そうでない場合はFalseを返す。
16istitle()

文字列にタイトルが付いている場合(title()を参照)、Trueを返し、そうでない場合はFalseを返す。
17isupper()

文字列に大文字と小文字が区別される文字が少なくとも1つ含まれていて、これらの(大文字と小文字が区別される)文字がすべて大文字の場合はTrueを返し、そうでない場合はFalseを返す。
18join(seq)

指定された文字列を区切り記号として使用して、seq内のすべての要素(文字列表現)を新しい文字列にマージする。
19len(string)

文字列の長さを返す
20ljust(width[, fillchar])

元の文字列を左揃えにして、fillcharで長さがwidthの新しい文字列を返し、fillcharはデフォルトでスペースである。
21lower()

文字列内のすべての大文字を小文字に変換する。
22lstrip()

文字列の左側にあるスペースまたは指定された文字を切り捨てる。
23maketrans()

文字マッピング用の変換テーブルを作成する。2つの引数を受け入れる最も単純な呼び出しメソッドは、最初の引数は変換される文字を表す文字列であり、2番目の引数は変換のターゲットを表す文字列である。
24max(str)

文字列strの最大の文字を返す。
25min(str)

文字列strの最小の文字を返す。
26replace(old, new [, max])

文字列内のoldを newに置き換えて、maxが指定されている場合、置き換えの回数はmax回を超えない。
27rfind(str, beg=0,end=len(string))

find()関数に類似するが、右から検索する。
28rindex( str, beg=0, end=len(string))

index()に類似するが、右から検索する。
29rjust(width,[, fillchar])

右揃えの元の文字列を返す。そして、fillcharを使用して(デフォルトではスペース)長さがwidthの新しい文字列を埋める。
30rstrip()

文字列の最後のスペースを削除する。
31split(str=””, num=string.count(str))

strを区切り記号として、文字列をスライスする。numに指定された値がある場合、num +1個のサブ文字列のみがスライスされる。
32splitlines([keepends])

行( ‘\ r’、 ‘\ r \ n’、\ n ‘)で区切り、各行を要素として含むリストを返す。引数keependsがFalseの場合、改行記号は含まれない。Trueの場合は、改行文字が保留される。
33startswith(substr, beg=0,end=len(string))

文字列が指定された部分文字列substrで始まるかどうかを確認し、はいの場合はTrueを返し、そうでない場合はFalseを返す。 begとendで値を指定する場合は、指定した範囲内で確認する。
34strip([chars])

文字列でlstrip()とrstrip()を実行する。
35swapcase()

文字列内で大文字を小文字に変換し、小文字を大文字に変換する。
36title()

「titled」文字列を返す。これは、すべての単語が大文字で始まり、残りの文字が小文字であることを意味する(istitle()を参照)。
37translate(table, deletechars=””)

strで指定されたテーブル(256文字を含む)に従って文字列の文字を変換し、フィルターする文字をdeletechars引数に入れる。
38upper()

文字列内の小文字を大文字に変換する
39zfill (width)

長さがwidth の文字列を返す。元の文字列は右揃えで、前面は0で埋められる。
40isdecimal()

文字列に10進文字のみが含まれているかどうかを確認し、10進文字のみが含まれている場合はtrueを返し、そうでない場合はfalseを返す。
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です