8. 文字列
文字列型について
(Python 3 系からはunicodeデフォルトに変更されているので注意)
シーケンス型のうち str, unicode が文字列。文字列リテラル(str型)は
1
 |  | 
もしくは
1
 |  | 
のように表す。
unicode文字列はほぼ文字列と同じ。マルチバイト文字を扱う場合はこの型を使うと、文字数等をうまいこと計算してくれる。
1
 |  | 
もしくは
1
 |  | 
のように表す。
3重クオート
1 2 3 4 5  |  | 
もしくは
1 2 3 4 5  |  | 
中では改行文字がそのまま認識される。 改行文字をキャンセルする場合は\を文末に。
1 2 3 4 5 6 7 8 9 10 11 12 13  |  | 
基本的に、日本語を扱う場合はその流れをunicode型で統一するのがベスト。 ただし、一部のモジュール(MeCab等)はstr型以外で動作しない場合があるので、 そのときはstr型に変換してやる。
ちなみにstr型とunicode型で同じ文字列「あいうえお」を==で比較した場合。
1 2  |  | 
となる。バグの原因になりやすいので注意。
エスケープシーケンス
文字列中では以下の文字は特別な意味を表す。
よく使うのは
記号 \, ', " のエスケープ、
改行コード \n (*nix) \r\n (Windows)、
タブ文字 \t あたり。
| エスケープシーケンス | 意味 | 
|---|---|
| \ | バックスラッシュ() | 
| ' | 一重引用符(‘) | 
| " | 二重引用符(“) | 
| \a | ASCII 端末ベル | 
| \b | ASCII バックスペース | 
| \f | ASCII フォームフィード | 
| \n | ASCII 行送り | 
| \N{name} | Unicodeデータベースで名前nameを持つ文字 | 
| \r | ASCII 復帰 | 
| \t | タブ文字 | 
| \uxxxx | 16bit Unicode の 16進数値 xxxx を持つ文字 | 
| \Uxxxxxxxx | 32bit Unicode の 16進数値 xxxxxxxx を持つ文字 | 
| \v | ASCII 垂直タブ | 
| \ooo | 8進数値 ooo を持つ文字 | 
| \xhh | 16進数値 hh を持つ文字 | 
よく使う文字列メソッド
下記のメソッドと、シーケンス型の演算子でだいたいのことはできる。
- str.encode(encoding)
- 文字列をencoding(例. “utf-8”)でエンコードする。
 
 
1 2  |  | 
-  str.decode(encoding)
- 文字列をencoding(例. “utf-8”)でデコードする。
 
 
1 2 3  |  | 
- str(x)
- str型に変換する
 
 
1 2  |  | 
- unicode(x)
- unicode型に変換する
 
 
1 2 3 4  |  | 
UnicodeDecodeError: 'ascii' codec can't decode byte XXXX in position Y: ordinal not in range(128) というエラーが帰ってきた場合、システムの標準文字コードがasciiになっている。
色々解決方法はあるが、一番手っ取り早い解決方法は、以下をプログラムの冒頭部分に記述する。
1 2 3 4 5 6 7 8  |  | 
str.find(sub[, start[, end]])
- 文字列のスライス s[start,end] (start、endは省略可)にsubが含まれる場合はその最小値のインデックス、そうでない場合は-1を返す。
 
str.join(iterable)
- iterable中の文字列をstrで結合した文字列を返す。
 
1 2 3  |  | 
- str.lstrip([chars])
- 文字列の先頭部分を除去したコピーを返す。引数 chars は除去される文字集合を指定する文字列。省略した場合は空白文字を除去。
 
 
1 2  |  | 
- str.rstrip([chars])
- 文字列の末尾部分を除去したコピーを返す。引数 chars は除去される文字集合を指定する文字列。省略した場合は空白文字を除去。
 
 
1 2  |  | 
str.strip([chars])
- 文字列の先頭および末尾部分を除去したコピーを返す。引数 chars は除去される文字集合を指定する文字列。省略した場合は空白文字を除去。
 
str.split([sep[, maxsplit]])
- sepを単語の境界として、文字列を単語に分解し、単語からなるリストを返す。maxsplitが与えられた場合、最大maxsplit回分割され、maxsplit + 1 の要素数のリストとなる。
 
1 2  |  | 
- str.splitlines([keepends])
- 文字列を改行部分で分解し、各行からなるリストを返す。keepends が True の場合のみ改行コードを含んだままの文字列となる。