如何处理具有特殊 unicode 字符的字符串并将其更改为与 print 语句的输出相同?

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

我有生日_气球。\u202egpj

如果我打印(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.