Pythonでは、文字列を扱うためのデータ型としてstrunicodeがあります。これらの違いを理解することは、Pythonでの文字列操作やエンコーディング問題を理解する上で重要です。

strとunicode

Python 2では、strは8ビット値のシーケンスを含み、ASCII文字のみを表現できます。一方、unicodeはUnicode文字のシーケンスを含み、任意の言語の任意の文字を表現できます。

>>> len('à')   # デフォルトはutf-8 -> 2バイトを取る
2
>>> len(u'à')  # 1つのコードポイント
1

また、strunicodeは、strが7ビットASCII文字のみを含む場合、演算子を使用して一緒に使用できます。

strとunicodeの使い分け

スクリプト内部では、unicodeに統一するのがベストです。sys.argsなど、ライブラリから取得したstrはすぐにunicodeに変換します。逆に、スクリプト外部に文字列を出すとき(例:print)は、出す直前でunicodeからstrに変換します。

>>> 'いろはに' + u'ほへと'  # UnicodeDecodeErrorが発生
Traceback (most recent call last):
  File "<input>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

このように、Pythonで文字列を扱う際には、strunicodeの違いを理解し、適切に使い分けることが重要です。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です