旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

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

2010年3月10日

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リポジトリへの直リンクはどこにあるんだろう?