11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python3で漢字の判定

Last updated at Posted at 2016-05-04

Python3で文章に記号があるかどうかを判定したかったが、ブラックリストにすると思ったより大変そうだったので

  • 数字
  • アルファベット
  • 平仮名
  • 片仮名
  • 漢字

のいずれかのみが続く文字かどうかを判定しようとした。

はまりどころ

Unicode文字列で範囲指定することにした。(←そもそもの間違い)

Python2では、漢字は下記のようにすれば(ほぼ)判定できる。

# Python2

import re
str = 'これは漢字を含みます'
re.search('[\xE4B880-\xE98CAC]', str)

Python3では正規表現中の文法が違う。

  • \xではなく\uで指定する
  • UTF-8ではなくUTF-16で指定する

これを踏まえると

# Python3

import re
str = 'これは漢字を含みます'
re.search('[\u4E00-\u9FD0]', str)

となる。Python2と同様に書こうとして

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-7: truncated \xXXXXXXXX escape

というエラーが出てはまった。

最後に気づいた

これでよくね?

re.search('[0-9a-zA-Zあ-んア-ン一-鿐]', str)

参考

11
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?