我试图以“从右到左”的语言删除字符串的最后一个字符.但是,当我这样做时,最后一个字符包裹到字符串的开头.
例如
ותֵיהֶם]:
变
ותֵיהֶם]
例如
ותֵיהֶם]:
变
ותֵיהֶם]
我知道这是我处理R-T-L范式的一个基本问题,但如果有人可以帮助我思考它,我会非常感激.
码
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','')
解决方法
Unicode中的某些字符始终是LTR,有些字符始终是RTL,有些字符可能取决于其周围的上下文.此外,双向文本的显示上下文将具有“主导”方向性(例如,主要为英文文本配置的文本编辑器将主要是LTR并且具有参差不齐的右边距,一个主要配置为希伯来文将主要是RTL,具有衣衫褴褛的左边缘).
看起来这里发生的事情是,当两个RTL字符之间出现一个结束的方括号字符时,它以RTL格式(第一个例子)呈现,但是当它出现在RTL和LTR字符之间时(或者在它结束时) string – 基本上,它在两侧没有相同方向性的其他字符的某个地方)然后它被认为是与主要方向匹配的任何文本行的一部分.如果您尝试将鼠标拖到字符串上以选择字符,您将看到逻辑上关闭]仍然遵循ֶם,即使在视觉上它似乎已移动.
如果字符串中倒数第二个字符也是希伯来字符(或其他强RTL字符)而不是a],或者显示上下文主要是RTL,那么它将出现在您期望的位置.