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() メソッドを使います
|
置き換えは replace() メソッドを使います
a = "abc+def+ghi" print(a.replace("+", "@")) |
指定文字(文字列も可)が最初に出現した位置は index() メソッドで求められます。
a = "abcdefg" print(a.index("e")) |
index() は、指定した文字がヒットしないと例外を吐くので、例外をトラップするか、in を使って指定文字(指定文字列)が含まれているか確認すると良いでしょう。
|
|
エスケープ文字は 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
Copyright © MURA All rights reserved.