6

「右から左」の言語で文字列の最後の文字を削除しようとしています。ただし、そうすると、最後の文字が文字列の先頭に折り返されます。例 ותֵיהֶם]׃ותֵיהֶם]

これがRTLパラダイムの扱い方の根本的な問題であることは知っていますが、誰かがそれについて考えるのを手伝ってくれるなら、私はそれをとても感謝しています。

コード

with open(r"file.txt","r") as f:
    for line in f:
        line = unicode(line,'utf-8')
        the_text = line.split('\t')[1]
        the_text.replace(u'\u05C3','')
4

1 に答える 1

10

Unicodeの一部の文字は常にLTRであり、一部は常にRTLであり、一部は周囲のコンテキストに応じて変更できます。さらに、双方向テキストの表示コンテキストには「主な」方向性があります(たとえば、主に英語のテキスト用に構成されたテキストエディタは主にLTRであり、右マージンが不規則です。主にヘブライ語用に構成されたテキストエディタは主にRTLであり、不規則な左マージン)。

ここで起こったことは、閉じ角括弧文字が2つのRTL文字の間に表示されると、RTL形式(最初の例)でレンダリングされますが、RTLとLTR文字の間に(または文字列-基本的に、両側に同じ方向性の他の文字がない場所)、それは、主な方向に一致するテキストの実行の一部であると見なされます。文字列の上にマウスをドラッグして文字を選択しようとすると、視覚的には移動したように見えても、論理的には終了]が続くことがわかります。ֶם

文字列の最後から2番目の文字も、ではなくヘブライ文字(または他の強力なRTL文字)である]場合、または表示コンテキストが主にRTLである場合は、期待どおりの場所に表示されます。

于 2012-10-25T22:45:52.407 に答える