如何内部处理字符串,使其结果与终端输出的显示内容一致?
问题描述
我有字符串:"birthday_balloons.\u202egpj",执行print("birthday_balloons.\u202egpj")时,终端输出为:
birthday_balloons.jpg
可见\u202egpj部分被反转成了jpg。需要在程序内部直接处理该字符串,得到和终端显示一致的"birthday_balloons.jpg",且不能通过捕获终端输出的方式实现。
解决方案
\u202e是Unicode中的右至左标记(Right-to-Left Mark, RLM),终端会依据它反转后续字符的显示顺序。要在程序内处理这个字符串,核心逻辑是定位RLM的位置,反转它之后的所有字符,再移除RLM本身。
以下是Python的实现代码:
original_str = "birthday_balloons.\u202egpj" rlm_char = "\u202e" if rlm_char in original_str: # 分割字符串为RLM之前和之后的两部分 before_rlm, after_rlm = original_str.split(rlm_char, 1) # 反转RLM后的字符并拼接 processed_str = before_rlm + after_rlm[::-1] else: processed_str = original_str print(processed_str) # 输出: birthday_balloons.jpg
如果字符串中存在多个RLM或RLM后还有其他特殊字符,可以扩展逻辑,但针对当前场景,上述代码已足够解决问题。
内容的提问来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

