2006年06月14日

日本語を扱う - 2. 文字列とユニコード文字列

Python には、文字列型とユニコード型の二つのタイプが存在します。この二つのタイプは、暗黙的に変換されることがあるので、型の違いがわからないと頻繁にエラー (UnicodeError) が出て悩むことが多いです。

ユニコード文字列の定数は、最初に u をつけます。
uni_str = u"あいうえお"
(スクリプトの最初にエンコードを書いておく必要)

・RAW文字列
 r"abc" のように、文字列定数の頭に r をつけるとRAW文字列になります。Pythonでの文字列は、CやJAVA言語と同様に ¥(円記号または逆スラッシュ)はエスケープシーケンスです。
Windowsでのパスのように、文字列の中で円記号そのものを含める必要がある場合は、¥¥のように二つ続けて書く必要があります。しかし、正規表現を書く場合など、円記号だらけで読みづらくなってしまいます。そこでRAW文字列を使うと読みやすくなります。
"c:\\windows\\"  # 通常の文字列
r"c:\windows\" # RAW文字列
ur"c:\windows\" # ユニコードRAW文字列

2006年03月24日

日本語を扱う - 1. はじめに

Pythonでも当然、日本語を処理することができます。バージョン2.4からはShift-JIS、EUC-JPなどのエンコードが標準ライブラリに用意されています。

ただし、日本語が含まれているPythonのスクリプトを実行すると、次のような警告が表示されてしまいます。

sys:1: DeprecationWarning: Non-ASCII character '\x82' in file
(ソースコードに Shift-JISで『あ』の文字が含まれていた場合)

これを回避するには、まずスクリプトの一行目または二行目に、このソースの文字コードを指定してやる必要があります。

例.
# encoding: shift_jis


CGIのスクリプトの場合は、先頭にPythonのパスを書く必要があるので、二行目に書いておきます。
#!/usr/local/bin/python
# encoding: shift_jis


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。