1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

【Python入門】Pythonで日本語を扱う方法

【Python入門】
Pocket

Pythonはさまざまな言語に対応しており、日本語も当然扱うことができます。しかし、日本語はマルチバイト文字と呼ばれ、英語などと比べると扱いが少し難しいです。そのため、文法はあっているのに日本語を出力しようとするとエラーが出る、ということが良くあります。

そこで今回は日本語を扱うために知っておきたい文字コードの基礎知識と、Pythonで日本語を扱う方法について説明します。

文字コードとは

文字コードとは、文字をコンピュータで扱うために、その文字を数字に置き換えたもののこといいます。コンピュータは本来、数字の0と1を用いた2進数しか表現することができません。そこで、文字に対応する数字を割り当てて、文字を扱えるようにしています。

主要な文字コードには以下のようなものがあります。

ASCII

ASCIIコードは主に英語圏で使われる文字コードで、もっとも基礎的な文字コードと言われています。1文字を1バイトで表現します。

UTF-8

ASCIIコードに世界中の文字を加えたのがUTF-8です。ASCIIコードだけでは表現しきれない日本語にも対応しています。世界中のあらゆる文字に対応しているため、世界標準の文字コードとも言えます。

Shift-Jis

ASCIIコードに漢字などの日本語を追加した文字コードです。日本語を使う際には便利ですが、UTF-8などと比べると文字化けしてしまう環境が多いのが欠点です。

Pythonで日本語を扱う

簡単ですが、文字コードの基礎について説明しました。ここでは、実際にPythonで日本語を扱う方法を見ていきましょう。

文字コードを宣言する

Python2.4以降は標準で日本語をサポートするようになりました。そのため、特に何もしなくても日本語を使うことができます。しかし、Pythonスクリプトを実行した際に、そのスクリプトの文字コードによってはエラーが発生することがあります。

実行結果

SyntaxError: Non-UTF-8 code starting with ‘\x82’ in file test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

実は、このスクリプトファイルは文字コードがShift-jis形式で書かれています。ところが、Pythonのデフォルトの文字コードはUTF-8なので、このファイルをUTF-8として読み込もうとしてしまいます。そのため、エラーが出てしまいます。こういったエラーを防ぐためには、スクリプトファイルがUTF-8ではなくShift-jisで書かれていることをPythonに知らせる必要があります。

実行結果

こんにちは!
現在Pythonの勉強中です

この例では、エラーが出ず文字を出力することができました。Pythonのスクリプトファイルの1行目もしくは2行目に「# coding: 文字コード」を記入することで、そのファイルで使われている文字コードを宣言し、Pythonに知らせることができます。「文字コード」の部分を「Shift_jis」にすればShift jisになりますし、「utf-8」にすればutf-8になります。

ただし、先ほども言った通りPythonはデフォルト文字コードがutf-8なので、なるべくPythonのスクリプトファイルはutf-8で書くようにし、その先頭には必ず「# coding: utf-8」と記述するようにしましょう。

文字コードを指定してファイルを開く

pythonではファイルを開いて中身を読み込んだり、文字列をファイルに書き込んだりすることができます。ファイルの読み書きをする場合も、日本語を扱う場合は文字コードに気をつけないとエラーが起きたり文字化けが起こったりします。それを防ぐために、Pythonではファイルを開く際にも文字コードを指定することができます。

文字コードを指定してファイルを開くにはcodecsモジュールのopen関数を使うので、あらかじめインポートしておきましょう。codecs.openは通常のopenファイルと扱いがほぼ同じですが、3つ目の引数に文字コードを渡すことで、その文字コードでファイルを開くことができます。

test.txt

実行結果

読み込みテスト

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る