ITメモ
Python / パイソン




【Python】文字を取り扱う方法

【Python】
文字を取り扱う方法




「Python」で文字を取り扱うには、 簡単でもありますが、関数などで操作する時は、 色々と知識が必要になります。



「Python」の文字列


文字列は、「"(ダブルクォート)」「'(シングルクォート)」で囲む。

変数 = "Hello world"
変数 = 'Hello world'

「"(ダブルクォート)」の中では、 「'(シングルクォート)」が使用でき、
「'(シングルクォート)」の中では 、「"(ダブルクォート)」が使用可能。
「"(ダブルクォート)」 の中で「"(ダブルクォート)」を、「'(シングルクォート)」の中で「'(シングルクォート)」を使用するには、「\(バックスラッシュ)」を用いて引用符をエスケープ(無効化)して使用することも可能。


バックスラッシュ(\)を用いることで、複数行に分けることができます。
変数 = 'Sample \
Text'


「"(ダブルクォート)」「'(シングルクォート)」の前に、「 r」「 R」をつけると、「エスケープシーケンス」が無視される。
変数 = 'aaa\nbbb' # \n は「改行」とみなされる
変数 = r'aaa\nbbb' # \n は「\(バックスラッシュ)」と小文字「n」とみなされる


「三重ダブルクォート("""文字列""")」「三重シングルクォート('''文字列''')」 は、複数行にまたがった文字列が記述可能。
変数 = """Sample Test 01
Sample Test 02
Sample Test 03
"""
複数の文字列をスペースで区切ることで、連結可能。
print 'Sample' 'Text'


Back

エスケープシーケンス(\x)


\改行バックスラッシュと改行が無視される
\\バックスラッシュ(\)
\'シングルクォート(')
\"ダブルクォート(")
\aベル(BEL)
\bバックスペース(BS)
\fフォームフィード(FF)
\n改行(LF)
\r復帰(CR)
\tタブ(TAB)
\v垂直タブ(VT)
\nnn8進表記文字(nは0~7)
\xnn16進表記文字(nは0~f)
\uxxxxユニコード文字xxxx (例: u"\u3042")
\U....xxxxユニコード文字xxxxxxxx (例: U"\U00003042")
\N{name}Unicodeデータベース文字 (例: u"\N{HIRAGANA LETTER A}")


Back

文字列のフォーマット(%)




文字列のフォーマット(%)

「% 演算子」を用いて、C言語の「printf()」関数に似た記法が可能。
SampleText = "Sample Number" SampleNum = 987654321 msg = "Test Message: %s (%d)" % (SampleText , SampleNum) print msg #=> Test Message: Sample Number (987654321)


文字列演算子の種類
%s文字列
%d整数
%f浮動小数点数
%x16進数
%o8進数
%%%自身を表示


変数 = "%s" % "ABC" #=> ABC
変数 = "%d" % 123 #=> 123
変数 = "%f" % 1.23 #=> 1.23
変数 = "%x" % 255 #=> ff
変数 = "%o" % 255 #=> 377
変数 = "%%%d" % 80 #=> %80

「%」に続く数値で、「文字幅」「桁数」を指定可能。

print "|%3s|" % 'ABC' #=> | ABC| : 右寄せ3文字分
print "|%-3s|" % 'ABC' #=> |ABC | : 左寄せ3文字分
print "|%3d|" % 123 #=> | 123| : 右寄せ3桁
print "|%-3d|" % 123 #=> |123 | : 左寄せ3桁
print "|%+3d|" % 123 #=> | +123| : ±符号付き
print "|%3.2f|" % 1.23 #=> | 1.23| : 全体桁数.少数点以下の桁数
print "|%05d|" % 123 #=> |00123| : 0埋め



Back

文字列の一部を取り出す方法


「Python」では、
文字列の一部を簡単に取り出すことができる。
文字列の番号を指定して、部分的な抽出が可能。


文字列を取り出すサンプルコード

print "Sample Text"[0]
print "Sample Text"[3:9]
print "Sample Text"[5:]
print "Sample Text"[-4:]

出力結果:
S
ple Te
e Text
Text


a = "Sample Text"[0] print a[0]
print a[1:4]
print a[3:]
print a[-4:]

出力結果:
S
amp
ple Text
Text


Back

文字を結合する方法


文字を結合して出力するには、「,」「+」を使用して、 文字などを結合して表示する。

「,」で結合すると、「空白(スペース)」を入れて結合してくれる。
「+」で結合すると、「空白(スペース)」なしで結合してくれる。


print "Hello", "World"

出力結果:Hello World

print "Hello" + "World"

出力結果:HelloWorld


Back

文字を分割する方法


文字を分割したいときは、「split()」関数を使用して文字を分割してから出力する。
変数に格納せずとも、関数を結合することで、結果をそのまま出力することが可能。


print "Hello World".split(" ")

出力結果:['Hello', 'World']


print "Hello World".split(W)

出力結果:['Hello ', 'orld']


print "Hello World".split(e)

出力結果:['H', 'llo World']


Back

文字を置き換える方法


文字列を置き換えて出力するには、 「replace()」関数を使用して、 文字を置き換える。


print "置き換える対象文字列".replace("置き換える対象文字","置き換える文字")


print "OutPut Test Now!!".replace("P","O")

出力結果: OutOut Test Now!!


Back

文字を「大文字」「小文字」に変換する方法


文字列を「大文字」「小文字」に変換するには、
「upper」「lower」関数を使用すると、簡単に「大文字」「小文字」変換ができる。

1文字だけ「大文字」「小文字」変換をしたい場合は、「replace()」関数を使用して、1文字ずつ変換することが可能。


print "Hello World".upper()

出力結果:HELLO WORLD


print "Hello World".lower()

出力結果:hello world



Back

文字列をつなぐ方法


文字列をつなぐには、「join」関数を使用して結合する。
「join」関数は、配列の状態になっている文字を、 指定の文字を挟んで結合することができる。



#「join」関数の使い方
"結合する文字列間に挿入する文字".join(結合したい文字列の配列変数)
print "結合する文字列間に挿入する文字".join(結合したい文字列の配列変数)
変数名 = "結合する文字列間に挿入する文字".join(結合したい文字列の配列変数)


入力コマンド:
a = "Sample Text". split(" ")
print a
b = " ".join(a)
print b


出力結果:
['Sample', 'Text']
Sample Text


Back

文字列を検索する方法


文字列を検索するには、
「find」関数を利用する。
「find」関数は、検索したい文字を指定すると、 見つかった場合に、最初に見つかった文字の場所を、数字で返してくれる。
文字列の中に、検索文字がない場合は、「-1」を返す。



"検索対象の文字列".find("検索したい文字")
print "検索対象の文字列".find("検索したい文字")
変数名.find("検索したい文字")


#サンプルコード
print "Sample Text".find("p")

出力結果:3


Back

文字列を数える方法


文字列を数えるには、「count」関数を使用します。
指定した文字がいくつあるのかを数えてくれる関数で、
指定した文字がない場合は、「-1」を返してくれます。


print "Sample Text".count("x")

出力結果:9


Back