小编imB*_*raa的帖子

python 如何处理和打印包含 RTL 和 LTR 语言的字符串?

我一直在网上搜索并向人们询问这个主题,但我确实没有得到令人满意的答案,让我在这里用 python 解释我的问题。

假设我有这个字符串:

a = '??? ???? ??? (80) ?? (something) ?????? ????? ?????'
Run Code Online (Sandbox Code Playgroud)

上面的字符串实际上应该如下所示:

b = '?????? ????? ????? (something) ??? ???? ??? (80) ??'
Run Code Online (Sandbox Code Playgroud)

因为它从 ( ??? )开始,到 ( ????? )结束

请记住,变量a的内容是按顺序正确写入的,但是 python SADLY打印出来的是它所看到的,所以输出是不正确的,尽管写入是正确的,当 ( (something) ) 进入字符串时它被翻转了,所以变量b内容是一种使文本保持正确形状的变通方法,尽管它写错了,而且不是按应写的顺序!

现在,你可能会说“如果你找到了让它工作的方法,你还在胡说八道什么?!:S”,我发现了一种使文本保持形状并看起来不错和可读的方法,我发现python 比“python 打印它看到的东西”有更多的意义当它试图打印一个双向字符串时,python 实际上以一种非常奇怪的方式运行,它实际上是在字符串周围跳跃以打印它,它没有起点和终点点(意思是从右到左或从左到右打印)让我们以变量b字符串为例:

而不是从右边打印字符串作为起点到左边作为终点(应该是),

python 会先打印 ( ?????? ??????? ????? ),然后是 ( (something) ) 其次,然后是 ( ??? ?????? ??? (80) ?? ) 第三最后打印的字符串将是 ( ?????? ????? ??????? (something) ??? ???? ??? …

python bidi arabic bidirectional right-to-left

6
推荐指数
1
解决办法
308
查看次数

标签 统计

arabic ×1

bidi ×1

bidirectional ×1

python ×1

right-to-left ×1