Pythonで日本語を扱う方法【初心者向け】

初心者向けにPythonで日本語を扱う方法について解説しています。Pythonで日本語を使用する場合の文字コードの宣言方法を実際に文字列を入力しながら順番に覚えていきましょう。文字コードの種類も知っておくと便利です。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Pythonで日本語を扱う方法について解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのPythonオンライン講座の内容をもとにしています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

日本語を扱う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

Pythonで日本語を扱う注意点とは

Python での日本語の扱いは、Python で使用している文字コードと深い関わりがあります。以前の、Pythonのバージョン2.x(xは任意の数字)では、標準の文字コードは ASCII でした。よって日本語を扱う際は、文字コードを宣言して扱う必要がありました。

しかし、現在主流のPython のバージョン3.xでは、標準の文字コードはUTF-8となったため、文字コードを宣言することなく、日本語を扱えるようになっています。これからPythonを学習する場合は、バージョン3.xを使用することになるため、Pythonで日本語を扱う際、特別に注意することは無いでしょう。

なお、文字コードについては、以下の記事も参考にしてください。

Pythonでファイルの文字コードを判定する方法

 

文字コードを宣言する書き方

Pythonのソースで使用する文字コードの宣言は以下のように行います。文字コードを宣言しなければ、デフォルトの文字コード「UTF-8」が使用されます。

# coding: エンコーディング名

エンコーディング名には、以下の文字が入ります。

utf_8 Python3.x標準の文字コード
shift_jis 日本のパソコンで主流だった文字コード
cp932 shift_jisの亜種でWindowsで現在も利用されている
iso2022_jp 電子メールで用いられる
euc_jp Unixで用いられる

注意点として、文字コードの宣言と、実際のソースファイルの文字コードは一致させる必要があります。

MacやCloud9などの環境では、デフォルトでUTF-8でソースファイルが作成されますが、Windowsの場合、エディターによってはcp932(シフトJISと表記される)で作成される場合もありますので注意しましょう。

 

[PR] Pythonで挫折しない学習方法を動画で公開中

実際にPythonで日本語を扱ってみよう

今回のサンプルプログラムでは、UTF-8でソースファイルを作成し、異なる文字コードの宣言をすることで、Python における日本語の扱いを確認していきます。以下のプログラムを作成し「chr.py」というファイル名で保存しましょう。

# coding: cp932
print("こんにちは")

プログラムを作成したら実行します。

Python chr.py

実行結果は以下のようになります。

縺薙s縺ォ縺。縺ッ

「こんにちは」と表示されるはずなのに、異なる結果が表示されましたね。これはUTF-8の文字コードを、無理やりcp932で表示させようとしたためです。

それではプログラムを修正しましょう。

# coding: utf-8
print("こんにちは")

実行結果は以下のようになります。

こんにちは

正しく表示されましたね。

 

次に、文字コードの宣言を削除してみましょう。

print("こんにちは")

実行結果は以下のようになります。

こんにちは

ソースファイルの文字コードがUTF-8であるため、文字コードを宣言しなくてもUTF-8で表示されます。プログラムを書いていて、文字が正しく表示されない場合は、ソースファイルの文字コードがUTF-8か、そうでない場合は文字コードの宣言と一致しているか、確認するようにしましょう。

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。