正規表現で絵文字(emoji)を判定するコードを紹介します。
コンテンツ
きっかけ
Djangoの開発途中でMySQLの文字コードをutf8のまま開発をしていることに気づきました。
この辺りは、「utf8 utf8mb4 違い」とかで調べれば色々出てきますが、ざっくりいうとこのような😄(絵文字)はutf8では保存ができません🥺
ちなみに😄とか🍣は海外でも「emoji」と呼ばれます。
解決方法
MySQLの文字コードをutf8で使用する場合、絵文字が使えない時の解決方法として2つが挙げられます。
- MySQLのencodingをutf8からutf8mb4に変更する
- 絵文字を投げられた際に絵文字判定やバリデーションをかける
本日はその2つの中の2.の方に焦点をあてて紹介をしていきます。
環境
・python : 3.8
絵文字を判定するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import re text = 'こんにちは' # 正規表現パターンを構築 emoji_pattern = re.compile("[" u"\U0001F600-\U0001F64F" u"\U0001F300-\U0001F5FF" u"\U0001F680-\U0001F6FF" u"\U0001F1E0-\U0001F1FF" u"\U00002500-\U00002BEF" u"\U00002702-\U000027B0" u"\U00002702-\U000027B0" # u"\U000024C2-\U0001F251" # 日本語 u"\U0001f926-\U0001f937" u"\U00010000-\U0010ffff" u"\u2640-\u2642" u"\u2600-\u2B55" u"\u200d" u"\u23cf" u"\u23e9" u"\u231a" u"\ufe0f" # dingbats u"\u3030" "]+", re.UNICODE) if re.findall(emoji_pattern, text): print('絵文字が含まれています。') else: print('絵文字が含まれていません。') |
今回のコードでは、textに絵文字が含まれている場合はFalse、絵文字が含まれていない場合はTrueで処理しました。
現状では、text = ‘こんにちは’となっていますので、このままコードを走らせると、「絵文字が含まれていません。」とprintされます。
ではここで、text = ‘こんにちは😊’と値を変えて実行してみます。
今度は、「絵文字が含まれています。」とprintされました。
OKですね。
その他
絵文字の扱い方に関しては「絵文字 python 正規表現」と検索すると、処理方法が多数紹介されています。
emojiのライブラリもありますので、そちらをインストールして使用するのもいいかもしれません。
また絵文字はどんどん追加がされていますので、今後も絵文字に対するパターンを追加していく必要があります。
参考
https://stackoverflow.com/questions/33404752/removing-emojis-from-a-string-in-python
最後に
いかがでしたでしょうか。
以上が、「【Python】正規表現で絵文字(emoji)を判定する」になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す