Home > Windows にまつわる e.t.c.

Python の文字列操作


PowerShell な人種が Python やってみたシリーズの 05 です。

今回は「文字列操作」についてまとめます。

 

クオーテーションと文字列

PowerShell では、ダブルクォーテーションは変数が展開され、シングルクォーテーションは変数が展開されない違いがありますが、Python では違いは無いので、好みで使い分けると良いでしょう。

a = "aaaaaaaaa"
b = 'bbbbbbbbb'

print(a)
print(b)

 

改行を含む文字列

改行を含む文字列は、\n を入れて書きます。

c = "aaa\nbbb\nccc"
print(c)

PowerShell では、改行を含む文字列として「ヒア文字列」がありますね。

$HereString = @"
aaaaaa
bbbb
cccc
"@

 

Python もヒア文字列と同様な「三連引用符」を使う表現が出来ます。(ダブルクォーテーション、シングルクォーテーションいずれでも OK)

d = """aaaa
bbbb
cccc"""

print(d)

 

PowerShell との違いは、Python は最初と最後の改行を入れると、改行が文字列に含まれる点です。

e = """
aaaa
bbbb
cccc
"""

print(e)

 

インデックスアクセス

文字列は、文字の配列なので、PowerShell と同様にインデックスでアクセスできます。

a = "abcdef"

print(a[2])

 

マイナスインデックスを使うと、末尾からアクセスすることが出来ます。
(PowerShell でもマイナスインデックスが使えるのね。知らなかったのはナイショです w)

print(a[-1])

 

文字列はイミュータブル

文字列はイミュータブル(変更不能)なオブジェクトなので、一部の文字を変更することはできず、変更する場合は新しい文字列を代入する必要があります。

これは PowerShell も同じですね。

 

文字列の連結

文字列は + で連結できます。

a = "abc" + "def" + "ghi"

print(a)

 

+= で追加もできます

a += "jkl"
print(a)

 

これも PowerShell と同じですね。

 

文字列に整数をかける

整数をかけると、文字列が整数分連結されます。

b = "abc" * 3
print(b)

 

*= も出来ます。

b *= 2
print(b)

 

これも PowerShell と同じですね。

 

大文字/小文字化

upper()、lower()メソッドで、PowerShell の ToUpper()、ToLower() メソッドと同じ事が出来ます。

a = "abcd"
print(a.upper())

b = "EFGH"
print(b.lower())

 

書式化

書式化は format() メソッドを使い、{} の箇所に出力します。

a = 10
b = 20
c = "ここに a の値 {} を入れ、ここには b の値 {} を入れます".format( a, b )
print(c)

 

分割

分割は split() メソッドを使います。

a = "aaa bbb".split(" ")
print(a[0])
print(a[1])

 

結合

結合は join() メソッドを使いますが、この join は面白い動きをします。

特定の文字に対し文字列を join すると、特定文字が挟み込まれます

a = "+".join("abcd")
print(a)

 

リストを結合するとこんな感じになります。

b = "+".join(["abc", "def", "gji"])
print(b)

 

空白除去

文字列前後の空白を取り除くには、strip() メソッドを使います

a = "    abc   def    "
print(a.strip())

 

置き換え

置き換えは replace() メソッドを使います

a = "abc+def+ghi"
print(a.replace("+", "@"))

 

出現位置

指定文字(文字列も可)が最初に出現した位置は index() メソッドで求められます。

a = "abcdefg"
print(a.index("e"))

 

index() は、指定した文字がヒットしないと例外を吐くので、例外をトラップするか、in を使って指定文字(指定文字列)が含まれているか確認すると良いでしょう。

# 例外をハンドリングする
b = "cccc"
try:
    print(b.index("d"))
except:
    print("not hit")

# in で確認する
c = "xxxx"
if "y" in c :
    print(c.index("y"))
else:
    print("not hit")

 

エスケープ

エスケープ文字は Windows の場合 \ を使います。

Linux 等の Windows 以外の環境ではバックスラッシュを使います

a = "aaaa\"bbbb\"cccc"
print(a)

 

改行は \n です。

 

スライス

スライスとは、配列の開始位置から終了位置までの要素を取り出します。

[開始位置:終了位置]

 

第2引数が長さではなく、終了位置なのが要注意です。

文字列の場合は、PowerShell の Substring() のように使うことが出来ます。

b = "abcdefghi"

# 5番目の文字
print(b[5])

# 3番目から5番目の文字
print(b[3:5])

# 先頭から 4 番目の文字
print(b[:4])

# 先頭から 4 番目以降の文字
print(b[4:])

# すべての文字
print(b[:])

 

関連情報

PowerShell な人種が Python やってみた
http://www.vwnet.jp/Windows/etc.asp#Python

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.