それなりブログ

とあるWebエンジニアのそれなりのブログ、JavaScript/Node.js/Python/PHP/ゲーム作成 など

[Python] 半角ASCII文字かを判定する

Pythonで、
 「ある文字列が、半角文字列(*1)だけで構成されているか?」
の一般的なチェック方法を調べました。

(*1)
半角文字 = 通常そのまま表示する範囲のアスキーコードの文字
と、ここでは定義。

Googleソースコードを “python is_ascii” で検索

じゃあ、どうやって調べようというところで、
同僚から “is_asciiとか無いの?” の一言ヒントを得て
Googleソースコード検索で検索してみましたら、出てきた!出てきた!

最初にヒットした2件は以下

chandler(? ごめん、詳細知らず)のis_ascii関数

def is_ascii(string):
    """return true if non ascii characters are detected in the given string
    """
    if string:
        return max([ord(char) for char in string]) < 128
    return True

makoのis_ascii_str関数

_ASCII_re = re.compile(r'\A[\x00-\x7f]*\Z')
def is_ascii_str(text):
    return isinstance(text, str) and _ASCII_re.match(text)

シンプルに128未満=半角文字みたい

どうやら、
 「ASCIIコードで 0-127 のものだけで構成されてたら、半角文字」
という判定のようです。

じゃあ、俺もそうしようということで完了。

ちなみに、Googleソースコード検索についてメモ

・コードの一部分への直リンクもサポートしてるのが便利
・svnリポジトリへの直リンクはどこにあるんだろう?

2 Responses to “[Python] 半角ASCII文字かを判定する”

  • 一番星 より:

    is_ascii関数は、「0」即ちヌルコードをTrueとして返してきます。
    ヌルコードもASCIIコードの仲間ですけど、有効文字では無いので、
    使い方に注意が必要かと思い、コメント。
    余計なコメントかも?

  • kjirou より:

    いえいえ、とても的確なアドバイスです

    そもそも、有効文字だけを表示したいのに、is_asciiで調べるのが間違ってたんですね


コメントを残す

メールアドレスが公開されることはありません。

Categories

Archives