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,具有参差不齐的左边距)。

看起来这里发生的事情是,当右方括号字符出现在两个 RTL 字符之间时,它会以其 RTL 形式呈现(您的第一个示例),但是当它出现在 RTL 和 LTR 字符之间(或在字符串 - 基本上,它在两侧没有相同方向的其他字符的地方)然后它被认为是与主要方向匹配的任何文本运行的一部分。如果您尝试将鼠标拖到字符串上以选择字符,您会看到逻辑上关闭]仍然跟随,ֶם即使在视觉上它似乎已经移动。

如果字符串中的倒数第二个字符也是希伯来字符(或其他强 RTL 字符)而不是],或者如果显示上下文主要是 RTL,那么它将出现在您期望的位置。

于 2012-10-25T22:45:52.407 回答