👋
【Python】書記素クラスターを扱う
Python で書記素クラスターを扱うには regex や PyICU を利用する。Debian 標準の Python の場合、apt パッケージが用意されている
sudo apt install python3-regex、python3-icu
mise や asdf などの開発環境ツールで導入した Python の場合、事前に C 言語の ICU パッケージを導入しておく必要がある
sudo apt install libicu-dev
venv でつくった仮想環境でモジュールを導入する
python3 -m venv .venv
source .venv/bin/activate
python -m pip install regex
python -m pip install pyicu
まず regex を使ってみる
>>> import regex
>>> str = 'ハ\u309Aハ\u309A'
>>> iter = regex.compile(r'\X').finditer(str)
>>> [m.group() for m in iter]
['パ', 'パ']
PyICU の場合、次のように書く
import icu
str = 'ハ\u309Aハ\u309A'
b = icu.BreakIterator.createCharacterInstance(icu.Locale())
b.setText(str)
i = 0
for j in b:
print(str[i:j])
i = j
少し書き換えてジェネレーターをつくる
import icu
def breakIter(str):
b = icu.BreakIterator.createCharacterInstance(icu.Locale())
b.setText(str)
i = 0
for j in b:
yield str[i:j]
i = j
str = 'ハ\u309Aハ\u309A'
for g in breakIter(str):
print(g)
Discussion