如何更改具有从右到左的 unicode 字符的字符串,使字符顺序与输出顺序匹配?

问题描述 投票:0回答:1

我有这个字符串:

"birthday_balloons.\u202egpj"

如果我执行

print("birthday_balloons.\u202egpj")
它会输出

birthday_balloons.jpg

注意最后三个字符是如何颠倒的。我想以这样的方式处理字符串(“birthday_balloons.\u202egpj”),使其变成(“birthday_balloons.jpg”),字符的顺序就像它们显示的那样。

我怎样才能做到这一点?

python special-characters unicode-string
1个回答
0
投票

\u202e
字符是 从右到左覆盖,其“兄弟”
\u202d
从左到右覆盖

要解释这些字符,以便所有字符都按照打印顺序放置在字符串中,您可以使用此函数:

def apply_direction(s):
    def recur(s, ltr):
        try:
            i = s.index("\u202d\u202e"[ltr])
        except ValueError:
            return s
        return s[:i] + recur(s[i+1:], not ltr)[::-1]
    return recur(s, True).replace("\u202d", "").replace("\u202e", "")

用于您的示例:

s = "birthday_balloons.\u202egpj"
s = apply_direction(s)
print(s)  # birthday_balloons.jpg (last three characters reordered)
© www.soinside.com 2019 - 2024. All rights reserved.