2023年9月13日水曜日

Pythonでサロゲートペア文字が含まれているか確認する方法

Pythonでサロゲートペア文字が含まれているか確認する方法

概要

今回は文字数を元にチェックしてみました

環境

  • macOS 13.5.2
  • Python 3.11.3

サンプルコード

def has_surrogate(s: str) -> bool:
    for ts in s:
        if len(ts.encode('utf-16-be')) == 2:
            continue
        else:
            return True
    return False


print(has_surrogate("𠀋"))  # True
print(has_surrogate("𡗗𦰩"))  # True
print(has_surrogate("Hello😀"))  # True
print(has_surrogate("含まれていない"))  # False
print(has_surrogate("含"))  # False
print(has_surrogate("Hello"))  # False

最後に

この方法だと2バイト文字列以外は全部弾くので 1 or 3 以上の文字も弾いてしまいます

正規表現でチェックする方法はないだろうか

参考サイト

0 件のコメント:

コメントを投稿