私は、言語が混在するテキストを扱っています。これは、すでに処理を行っており、単一の文字 (「文字」と呼ばれる) のリストの形式になっています。大文字と小文字の区別があるかどうかをテストするだけで、各文字がどの言語であるかを知ることができます (「test_lang」と呼ばれる小さな関数を使用)。次に、異なるタイプの文字の間にスペースを挿入したいので、文字タイプが混在する単語はありません。同時に、単語と句読点 (「punc」というリストで定義したもの) の間にスペースを挿入したいと考えています。私はこれを非常に簡単な方法で実行するスクリプトを作成しましたが、これは私には理にかなっていますが (以下)、信じられないほど遅いため、明らかに間違った方法です。
これを行うためのより良い方法を誰か教えてもらえますか?
# Add a space between Arabic/foreign mixes, and between words and punc
cleaned = ""
i = 0
while i <= len(letters)-2: #range excludes last letter to avoid Out of Range error for i+1
cleaned += letters[i]
# words that have case are Latin; otherwise Arabic
if test_lang(letters[i]) != test_lang(letters[i+1]):
cleaned += " "
if letters[i] in punc or letters[i+1] in punc:
cleaned += " "
i += 1
cleaned += letters[len(letters)-1] # add in last letter