1. Kenta-Han
Changes in body
Source | HTML | Preview
@@ -1,216 +1,230 @@
今回はPython3に置いての簡単な文字列操作について紹介したいと思います.
- [文字列に値を埋め込み](#文字列に値を埋め込み)
- [文字列の結合](#文字列の結合)
- [文字列の分割](#文字列の分割)
- [文字列の切り出し](#文字列の切り出し)
- [文字列の置換](#文字列の置換)
- [文字列の削除](#文字列の削除)
- [文字列の検索](#文字列の検索)
- [その他](#その他)
まず,文字列は「"(ダブルクォーテーション)」もしくは「'(シングルクォーテーション)」で囲んで表現しています.
例えば「Hello World」を表示したい場合(今回はメッセージを変数msgに入れます)は`msg = "Hello World"`と書き換えて表示します.また,メッセージを表示するために`print`を使います.それから文字列の中では特殊文字を使うことができて,いくつかあるのですが「\n」で改行,「\t」がタブになります.
## 文字列に値を埋め込み
-埋め込みを大きく分けて2つの方法があります
+埋め込みを大きく分けて2つの方法があります
まず1つ目の方法ですが,次のmoji_01.pyを見てください.
まず埋め込みたい値を文字列の中で「%」付きで表現していきます.
-そのときに値が文字列だったら「%s」,それから浮動小数点数だったら「%f」を使います.整数の場合は「%d」を使います.
+そのとき,値が入れたい場合は「%s」,浮動小数点数の場合は「%f」整数の場合は「%d」を使います.
その後に「%」と書いてあげて,埋め込みたい値をこのように書いてあげればOKです.
2つ目の方法は,「%」の部分を {0},{1} としてあげて,その後に .format(name, score) と書いてあげます.こちらの 0 番目の要素が {0} に, 1 番目の要素が {1} に埋め込まれます.
使用方法は次のプログラムを見てください.
``` moji_01.py
name = "guest"
score = 52.8
## 1つ目の方法
print("name: %s, score: %f" % (name, score))
## => name: guest, score: 52.800000
## 2つ目の方法
print("name: {0}, score: {1}".format(name, score))
## => name: guest, score: 52.8
+
+## 中身省略してもOK,そのときformatの中の順番で代入される
+print("name:{},score:{}".format(name, score))
+## => name: guest, score: 52.8
+
```
## 文字列の結合
2つの文字列の結合して,1つの文字列にするとき,「+」を使います.
joinメソッドとリスト/タプルを使って連結するテクニックもありますね。
また,同じ内容を繰り返す場合は*演算子で整数を与えると指定した回数だけリピートした文字列が生成されます。
使用方法は次のプログラムを見てください.
``` moji_02.py
-word1 = "Gu"
-word2 = "est"
+word_1 = "Gu"
+word_2 = "est"
## 「+」使用
-print(word1+word2) ## => Guest
+print(word_1 + word_2) ## => Guest
## 「join」使用
words = ["Hello", "World", "!"]
print(" ".join(words)) ## => Hello World !
## 「*」使用
-word3 = "Hello "
-print(word3 * 3) ## => Hello Hello Hello
+word_3 = "Hello "
+print(word_3 * 3) ## => Hello Hello Hello
```
## 文字列の分割
指定の文字列に対して,区切り文字で分割したリストを返します.
分割数はオプションで,分割する回数を制限できます.分割数は省略することができます.
splitは左から分割を行うことができます.また,rsplitは右から分割することができます.
使用方法は次のプログラムを見てください.
``` moji_03.py
-str = "If you can dream it you can do it"
+phrase = "If you can dream it you can do it"
## 「split」使用 .split(区切り文字, 分割数)
-print(str.split()) ## => ["If","you","can","dream","it","you","can","do","it"]
+print(phrase.split()) ## => ["If","you","can","dream","it","you","can","do","it"]
-str = "HelloWorld"
+word = "HelloWorld"
## 「rsplit」使用 .rsplit(区切り文字, 分割数)
-print(str.rsplit("l",1)) ## => ['HelloWor', 'd']
+print(word.rsplit("l",1)) ## => ['HelloWor', 'd']
```
## 文字列の切り出し
`文字列オブジェクト[開始インデックス:終了インデックス]`開始インデックスと終了インデックスをコロン(:)でつなげて指定します.
使用方法は次のプログラムを見てください.
``` moji_04.py
-str = "ABCDE"
-print(str[1:3]) ## => BC
-print(str[2:]) ## => CDE
-print(str[:3]) ## => ABCD
-print(str[:]) ## => ABCDE
+word = "ABCDE"
+print(word[1:3]) ## => BC
+print(word[2:]) ## => CDE
+print(word[:3]) ## => ABCD
+print(word[:]) ## => ABCDE
```
また,開始インデックスや終了インデックスをマイナス「-」つけることができます.ぜひ試してみて下さい.
## 文字列の置換
`.replace(置換される文字列, 置換する文字列, 置換回数)`を使用すると,指定の文字列を置換することができます.
置換回数はオプションで,置換する回数を指定できます.置換回数を指定しない場合は,全て置換されます.
使用方法は次のプログラムを見てください.
``` moji_05.py
-str = "ABCABCABC"
+word = "ABCABCABC"
## 指定文字列を置換する
-print(str.replace("ABC", "X")) ## => XXX
+print(word.replace("ABC", "X")) ## => XXX
## 置換回数を1回にして指定文字列を置換する
-print(a.replace("ABC", "X", 1)) ## => XABCABC
+print(word.replace("ABC", "X", 1)) ## => XABCABC
```
## 文字列の削除
`.strip(削除する文字列)`を使用すると,文字列から特定の文字を削除できます.
stripは両端.他に,lstripは左端,rstripは右端の文字列を削除します.
使用方法は次のプログラムを見てください.
``` moji_06.py
-str = "ABCABCA"
+word = "ABCABCA"
## stripで両端の削除
-print(str.strip("A")) ## => BCABCA
+print(word.strip("A")) ## => BCABCA
## lstripで左端の削除
-print(str.lstrip("A")) ## => BCABCA
+print(word.lstrip("A")) ## => BCABCA
## rstripで右端の削除
-print(str.rstrip("A")) ## => ABCABC
+print(word.rstrip("A")) ## => ABCABC
```
## 文字列の検索
`検索する文字列 in 検索対象の文字列`を使用すると,指定の文字列が含まれているかを調べることができます.
検索対象の文字列の中に,検索する文字列が存在すれば,True.存在しないならば,False.
使用方法は次のプログラムを見てください.
``` moji_07.py
-str = "ABCABCA"
+word = "ABCABCA"
## 存在する場合
-print("ABC" in str) ## => True
+print("ABC" in word) ## => True
## 存在しない場合
-print("E" in str) ## => False
+print("E" in word) ## => False
```
上の方法以外は,`.find(検索する文字列, 開始位置, 終了位置)`を使う方法もあります.こちらの方がよく使われます.
findは文字列の左端から検索するのに対し,rfindは文字列の右端から検索します.
こちらの方は,開始位置と終了位置を指定することによって,検索範囲を指定することができます.
使用方法は次のプログラムを見てください.
``` moji_07.py
-str = "ABCABCA"
+word = "ABCABCA"
## find
-print(str.find("A")) ## => 0
-print(str.find("B",2, 6)) ## => 4
+print(word.find("A")) ## => 0
+print(word.find("B",2, 6)) ## => 4
## rfind
-print(str.rfind("A")) ## => 6
-print(str.find("B",2, 6)) ## => 6
+print(word.rfind("A")) ## => 6
+print(word.find("B",2, 6)) ## => 6
## 検索した文字列が見つからない場合
-print(str.find("D")) ## => -1
+print(word.find("D")) ## => -1
```
## その他
### 文字列がXXだけであるか
``` moji_08.py
-str = "ABCabc"
+word = "ABCabc"
## 英数字だけか 「.isalnum」
-print(str.isalnum()) ## => True
+print(word.isalnum()) ## => True
## 英字だけか 「.isalpha」
-print(str.isalpha()) ## => True
+print(word.isalpha()) ## => True
## 数字だけか 「.isdigit」
print("123".isspace()) ## => True
-print(str.isdigit()) ## => False
+print(word.isdigit()) ## => False
## 空白文字だけか 「.isspace」
print(" \n\t\r".isspace()) ## => True
-print(str.isspace()) ## => False
+print(word.isspace()) ## => False
```
### 大文字と小文字の置き換え
``` moji_09.py
-str = "ABCabc"
+word = "ABCabc"
## 全て大文字にする 「.upper」
-print(str.upper()) ## => ABCABC
+print(word.upper()) ## => ABCABC
## 全て小文字にする 「.lower」
-print(str.lower()) ## => abcabc
+print(word.lower()) ## => abcabc
## 大文字と小文字を入れ替える 「.swapcase」
-print(str.swapcase()) ## => abcABC
+print(word.swapcase()) ## => abcABC
## 先頭を大文字、その他を小文字にする 「.capitalize」
-print(str.capitalize()) ## => Abcabc
+print(word.capitalize()) ## => Abcabc
```
### 幅寄せ
``` moji_10.py
-str = "ABCabc"
+word = "ABCabc"
## 左寄せ 「.ljust」
-print(str.ljust(10)) ## => "ABCabc "
+print(word.ljust(10)) ## => "ABCabc "
## 右寄せ 「.rjust」
-print(str.rjust(10)) ## => " ABCabc"
+print(word.rjust(10)) ## => " ABCabc"
## 中央寄せ 「.center」
-print(str.center(10)) ## => " ABCabc "
+print(word.center(10)) ## => " ABCabc "
## 0で埋めて左寄せ 「.zfill」
-print(str.zfill(10)) ## => "0000ABCabc"
+print(word.zfill(10)) ## => "0000ABCabc"
```
### 文字列の先頭または末尾がXXであるかを調べる
``` moji_11.py
-str = "ABCabc"
+word = "ABCabc"
## Aで始まるかを調べる
-print(str.startswith()) ## => True
+print(word.startswith("A")) ## => True
## Aで終わるかを調べる
-print(str.endswith) ## => False
+print(word.endswith("A")) ## => False
```
+### 文字列比較
+```moji_12.py
+word = "abcd"
+
+word_1 = "abcd"
+print(word == word_1) ## => True
+word_2 = "abce"
+print(word == word_2) ## => False
+```
#### 参考サイト
ひきメモ: [http://d.hatena.ne.jp/yumimue/20071223/1198407682](http://d.hatena.ne.jp/yumimue/20071223/1198407682)