【Python入門】日本語を扱う方法をパターン別に解説

今回はPythonで日本語を扱う方法について解説します!

日本語はマルチバイト文字と呼ばれて、英語よりも少々複雑な扱い方になります。

この記事では、

・文字コードとは
・Pythonで日本語を扱う方法
・文字コードを指定する方法

などの基本的な内容から、

・日本語が含まれたファイルを読み込む方法
・日本語の正規表現を使う方法

について、解説をしていきます。

文字コードとは何か、などの基礎からしっかりと学習していきましょう。

なお、Pythonの記事については、こちらにまとめています。

目次

文字コードとは

まずは文字コードとは何かについてを知っておきましょう。

普段文字コードと呼ばれているものは正確にはエンコーディングの方式のことを指しています。

そしてエンコーディングの方式とは、ASCIIShift-JISUTF-8などのことを指しています。

PythonではUTF-8標準的なエンコーディング方式になります。

また、今回扱おうとしている日本語はマルチバイト文字と呼ばれています。

マルチバイト文字は英語よりも扱いがめんどくさいということを覚えておきましょう。

さらに詳しい解説はこちらの記事をご覧ください。

日本語を扱う方法

ここからは実際に日本語を扱ってみましょう。

と言っても、Pythonは2.4系以降から日本語を標準でサポートしています。

なので、コンソール上でPythonを実行してみると、日本語が正常に表示されることがわかると思います。

print("こんにちは。")
print("Hello.")
print("こんにちは、World.")

実行結果

こんにちは。
Hello.
こんにちは、World.

このように、日本語と英語が混ざった状態でも表示させることができていますね。

文字コードを指定する方法

Python2.4系以降では標準で日本を表示させられることがわかりましたね。

次は、.pyファイルで保存されたプログラムを実行させてみましょう。

このhello.pyの文字コードをShift-JISで保存をしてみましょう。

hello.py

print("こんにちは。")
print("Hello.")
print("こんにちは、World.")

実行結果

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

このようにエラーが出てしまいましたね。

これは先程解説したようにPythonの標準的な文字コードがUTF-8になっていることが原因です。

これを回避するためには、このように修正しましょう。

# coding: shift_jis

print("こんにちは。")
print("Hello.")
print("こんにちは、World.")

先頭に「# coding: shift_jis」という一文を付け加えることで、Pythonに「このプログラムはShift-JISで書かれていますよ」ということを伝えることができます。

実行結果

こんにちは。
Hello.
こんにちは、World.

それでもPythonの標準的な文字コードはUTF-8なので、保存する形式もUTF-8にしたほうが無難でしょう。

日本語が含まれたファイルを読み込む方法

次は日本語が含まれたファイルを読み込む方法についてです。

Pythonから日本語が含まれた様々なファイルを読み込む場面では、先程のような手段を使うことができません。

ここではcodecsモジュールを使った方法で、文字コードを指定しながら日本語が含まれたファイルを読み込んでみます。

greeting.txt(Shift-JISで保存)

おはよう、Python。
こんにちは、Python。
こんばんは、Python。

hello.py

import codecs

txt = codecs.open('greeting.txt', 'r', 'shift_jis')

for line in txt:
    print(line)

実行結果

おはよう、Python。

こんにちは、Python。

こんばんは、Python。

codecsモジュールのopen関数を使うことで、文字コードを指定してファイルを開くことができましたね。

日本語の正規表現を使う方法

ここでさらに正規表現で日本語を使う方法についても見てみましょう。

正規表現とは、文字列の集まりを1つの形式で表すための特別な書き方になります。

正規表現についてわからない方はこちらの記事をご覧ください。

日本語の正規表現はそれぞれ、このように表されます。

[ぁ-ん] # ひらがなの正規表現
[ァ-ン] # カタカナの正規表現
[一-龥] # 漢字の正規表現
[ぁ-んァ-ン 一-龥] #日本語すべての正規表現

文章の中のひらがなカタカナ漢字を正規表現で抜き出したいときは、このようにします。

import re
txt = "皆さん、こんにちは、Python、パイソン"

# ひらがなの抽出
hiragana = re.findall("[ぁ-ん]", txt)
if hiragana:
    print(hiragana)
    
# カタカナの抽出
katakana = re.findall("[ァ-ン]", txt)
if katakana:
    print(katakana)
    
# 漢字の抽出
kanji = re.findall("[一-龥]", txt)
if kanji:
    print(kanji)

実行結果

['さ', 'ん', 'こ', 'ん', 'に', 'ち', 'は']
['パ', 'イ', 'ソ', 'ン']
['皆']

このようにそれぞれで指定した部分を正規表現で抽出できましたね。

まとめ

今回はPythonで日本語を使う方法について解説をしてきました。

Python2.4以降であれば標準で日本語を使うことができるので、それほど心配はいりません。

しかし、入力されるファイルの文字コードなどもエラーの要因になりますので気をつけてください。

また、日本語がどのように扱われているのかを知ることはとても大切です。

もし忘れてしまった場合は、ぜひまたこの記事をご覧ください!

なお、今Pythonを学習している方は以下の記事もどうぞ。

はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。

復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。

Python 入門完全攻略ガイド

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次