# 4.1 `string` -- 一般的な文字列操作

このモジュールは、文字クラスのチェックに役立つ定数と、文字列を扱う関数を 定義しています。正規表現を使った関数については `re` モジュールを参照してください。

このモジュールで定義される定数は以下のとおりです。

`ascii_letters`
  後述の `ascii_lowercase` と`ascii_uppercase` を合わ せたもの。この値はロケールに依存しません。

`ascii_lowercase`
  小文字 `'abcdefghijklmnopqrstuvwxyz'`。この値はロケールに依存せ ず、変更されません。

`ascii_uppercase`
  大文字 `'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`。この値はロケールに依存せ ず、変更されません。

`digits`
  文字列 `'0123456789'`。

`hexdigits`
  文字列 `'0123456789abcdefABCDEF'`。

`letters`
  後述の `lowercase` と `uppercase` を合わせた文字列。 具体的な値はロケールに依存し、`locale.setlocale()` が呼ばれたと きに更新されます。

`lowercase`
  小文字として扱われる文字全てを含む文字列。 ほとんどのシステムにおいて、 これは文字列 `'abcdefghijklmnopqrstuvwxyz'` です。 この定義を 変更してはいけません -- `upper()` と `swapcase()` に対する影響が定義されていないからです。具体的な値はロケールに依存し、 `locale.setlocale()` が呼ばれたときに更新されます。

`octdigits`
  文字列 `'01234567'`。

`punctuation`
  "`C`" ロケールにおいて、句読点として扱われる ASCII 文字の文字列。

`printable`
  印刷可能な文字で構成される文字列。これは `digits`、 `letters`、`punctuation`、`whitespace` を組 み合わせたもの。

`uppercase`
  大文字として扱われる文字全てを含む文字列。 ほとんどのシステムにおいて、 `'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` です。 この定義を変更してはいけま せん -- `lower()` と `swapcase()` に対する影響が 定義されていないからです。 具体的な値はロケールに依存し、 `locale.setlocale()` が呼ばれたと きに更新されます。

`whitespace`
  空白扱いの文字全てを含む文字列。ほとんどのシステムにおいて、これはスペ ース、タブ、改行、リターン、改頁、垂直タブです。この定義を変更しないこ と -- `strip()` と `split()` に対する影響が定義され ていないからです。

このモジュールで提供されるほとんどの関数は、string オブジェクトと Unicode オブジェクトのメソッドでも定義されています。詳細は ``String メソ ッド'' (8 ) を参照のこと。このモジュールで定義される 関数は以下のとおりです。

`atof`( | s)

  リリース 2.0 以降で撤廃された仕様です。 組み込み関数 `float()` を使いましょう。
  文 字列を浮動 小数点型の数値に変換します。文字列は Python の浮動小数点リ テ ラルの文法に 従っている必要があります。先頭に符号（"`+`" また は "`-`"）が付く のは構いません。この関数は、組み込み関数 `float()` に文字列が渡された場合と同じよう にふるまいます。

  注意: 文字列が渡されたとき、内在する C ライブラリによって NaN や Infinity が返されることがあります。 これ らの値に変換される文字列がどれであるかは、完全に C ライブラリに 依存す るので、ライブラリによって異なることが知られています。

`atoi`( | s[, base])

  リリース 2.0 以降で撤廃された仕様です。 組み込み関数 `int()` を使いましょう。
  文字 列 s を、base を基数とする整数に変換します。 文字列は１ 桁以上の 数字で構成されている必要があります。先頭に符号（"`+`" ま たは "`-`"） が付くのは構いません。base のデフォルト値は 10。 これが 0 の場合 は、（符号を省いた後の）先頭文字によってデフォルト値 が決定します。 "`0x`" か "`0X`" なら 16、"`0`" なら 8、その 他の場合は 10 が 基数になります。 base が 16 の場合、先頭の "`0x`" や "`0X`" は常に受け付け られますが、必須ではありません。 この関数は、組み込み関数 `int()` に 文字列が渡されたときと同 じようにふるまいます。（注意: より柔軟な数値リテラ ル解釈が必要であれ ば、組み込み関数 `eval()` を使いましょう）

`atol`( | s[, base])

  リリース 2.0 以降で撤廃された仕様です。 組み込み関数 `long()` を使ういましょう。
  文字列 s を、 base を基数とする long 整数に変換します。 文字列は１桁以 上の数字で構成されている必要があります。先頭に符号（ "`+`" または "`-`"）が付くのは構いません。 引数 base は `atoi()` の 場合と同じ意味。 基数が 0 の場合を除いて、文字 列末尾の "`l`" や "`L`" は認めらません。base が与えられ ないときと、この値に 10 が指定されたとき、この関数は組み込み関数 `long()` に文字列が渡されたときと同じように ふるまいます。

`capitalize`( | word)

  先頭文字だけ大文字にした word のコピーを返します。

`capwords`( | s)

  引数で与えられた文字列を`split()` で単語に分割し、 `capitalize()` で各単語の先頭文字を大文字化し、それを `join()` で連結します。 この関数は連続した空白文字を、スペー ス1つに置換し、先頭と末尾の空白を削除することに注意しましょう。

`expandtabs`( | s[, tabsize])

  タブを展開、すなわちタブを1つ以上のスペースに置換します。スペースの 個数は現在のコラム位置とタブ幅によって決定されます。コラム位置は文字列 中 に改行が出現する度に、0 にリセットされます。この関数は、改行以外の 非表 示文字やエスケープシーケンスを理解しません。タブ幅のデフォルト値 は 8 です。

`find`( | s, sub[, start[,end]])

  `s[start:end]` の中で、部分文字列 sub が 完全に含まれるもののうち、最初に見つかった位置を s のインデック スで返す。見つからなかった場合は `-1` を返す。 start と end のデフォルト値、および、負数が与えられた場合の 解釈はスライ スと同じ。

`rfind`( | s, sub[, start[, end]])

  `find()` と同じですが、最後に見つかったもののインデックスを返 します。

`index`( | s, sub[, start[, end]])

  `find()` と同じですが、部分文字列が見つからなかったときに `ValueError` を発生させます。

`rindex`( | s, sub[, start[, end]])

  `rfind()` と同じですが、部分文字列が見つからなかったときに `ValueError` を発生させます。

`count`( | s, sub[, start[, end]])

  `s[start:end]` の中で、部分文字列 sub が （重ならずに）出現する回数を返します。start と end のデフォ ルト値、および、負数が与えられた場合の 解釈はスライスと同じです。

`lower`( | s)

  大文字を小文字に変換した、s のコピーを返します。

`maketrans`( | from, to)

  `translate()` と `regex.compile()` に渡して、 from に含まれる各文字を、to の同じ位置にある文字に置換する ような変換テーブルを返します。from と to は同じ長さでな ければいけません。

  警告: `lowercase` と `uppercase` から得られる文字 列を、引数にしてはいけません。ロケールによっては、これらは長さが異なる。 大文字小文字の変換には、常に `lower()` と `upper()` を使いましょう。

`split`( | s[, sep[, maxsplit]])

  文字列 s に含まれる単語を、リストにして返します。 第 2 引数 sep が指定されなかった場合と `None` が指定された場合 には、 各単語は任意の空白（スペース、タブ、改行、リターン、改頁）で 区切られ ます。第 2 引数 sep が指定され、かつ、それが `None` でなけ れば、その文字列が単語の区切りになる。返されるリストの要素数は、文字列 内で重複しない区切り文字列の数より、1個多くなります。 第 3 引数 maxsplit のデフォルト値は 0。 この引数が 0 以外の場合、多くとも maxsplit 箇所で区切り、残りの文字列は、リストの最後の要素として 返されます（したがって、リストは多くとも `maxsplit+1` 個の 要素を持ちます）。

`splitfields`( | s[, sep[, maxsplit]])

  この関数は `split()` と同じようにふるまいます（昔は `split()` は引数1つの場合でのみ使われ、 `splitfields()` は引数2つの場合でのみ使われていました）。

`join`( | words[, sep])

  単語のリストまたはタプルの要素を、sep を間に入れて連結します。 sep のデフォルト値はスペース1個。 "`string.join(string.split(s, sep), sep)`" は、常 に s です。

`joinfields`( | words[, sep])

  この関数は `join()` と同じふるまいをします（昔は、 `join()` は引数1つの場合でのみ使われ、`joinfields()` は引数2つの場合でのみ使われていました）。 オブジェクトには `joinfields()` メソッドがないことに注意してください。 `join()` メソッドを使いましょう。

`lstrip`( | s[, chars])

  先頭の文字を取り除いた文字列のコピーを返します。chars が与えられない場合や、chars の値が `None` の場合、先頭の空白を取り除きます。chars が与えられ、その値が `None` でない場合、このメソッドを呼んだ文字列から、chars に含まれる文字を取り除きます。 chars は文字列でなくてはいけません。 バージョン2.2.3 以降で変更された 仕様: chars パラメータを追加。 初期の 2.2 バージョンでは、versionschars パラメータを渡せない

`rstrip`( | s[, chars])

  末尾の文字を取り除いた文字列のコピーを返します。chars が与えられない場合や、chars の値が `None` の場合、末尾の空白を取り除きます。chars が与えられ、その値が `None` でない場合、このメソッドを呼んだ文字列から、chars に含まれる文字を取り除きます。 chars は文字列でなくてはいけません。 バージョン2.2.3 以降で変更された 仕様: chars パラメータを追加。 初期の 2.2 バージョンでは、versionschars パラメータを渡せない

`strip`( | s[, chars])

  先頭と末尾の文字を取り除いた文字列のコピーを返します。chars が与えられない場合や、chars の値が `None` の場合、先頭と末尾の空白を取り除きます。chars が与えられ、その値が `None` でない場合、このメソッドを呼んだ文字列から、chars に含まれる文字を取り除きます。 chars は文字列でなくてはいけません。 バージョン2.2.3 以降で変更された 仕様: chars パラメータを追加。 初期の 2.2 バージョンでは、versionschars パラメータを渡せない

`swapcase`( | s)

  s の大文字と小文字を入れ替えたものを返します。

`translate`( | s, table[, deletechars])

  s の中から、（もし指定されていれば）deletechars に含まれる 文字を削除し、table を使って文字を入れ替えたものを返します。 table は 256 文字からなる文字列で、各文字の位置が、置換前の文字 コードに対応します。

`upper`( | s)

  s に含まれる小文字を大文字に置換して返します。

`ljust`( | s, width)

`rjust`( | s, width)

`center`( | s, width)

  これらの関数は、与えられた文字列幅の中で、それぞれ左寄せ、右寄せ、中央 寄せします。これらが返す文字列は、少なくとも width 文字分の長さが あり、s の右側、左側、または両側がスペースで埋まっている。文字列 が切られることはない。

`zfill`( | s, width)

  数値文字列の左側を、与えられた幅に達するまで 0 で埋めます。符号で始まる 場合も、正しく処理されます。

`replace`( | str, old, new[, maxreplace])

  s 内の部分文字列 old を全て new に置換したものを返し ます。 maxreplace が指定された場合、最初に見つかった maxreplace 個分だけ置換します。