You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字节级替换LTR字符为RTL字符时如何保留希伯来语单词顺序

解决方案

一、字节级替换解决顺序问题

原问题核心是希伯来语为RTL(从右到左)书写系统,但抓取到的占位符按LTR(从左到右)顺序存储,替换后字符顺序与目标单词完全相反。通过反转字节层面的Unicode转义序列,可直接得到正确结果:

data = "יתꢀראꢁ".encode("unicode_escape")
# 替换占位符对应的Unicode编码
data = data.replace(b"ua880", b"u05e9")
data = data.replace(b"ua881", b"u05d1")
# 分割Unicode转义片段,反转后重新拼接
parts = data.split(b"\\u")[1:]  # 剔除开头的空元素
parts.reverse()
data = b"\\u".join(parts)
# 解码得到正确单词
corrected_data = data.decode("unicode_escape")
print(corrected_data)  # 输出:בראשית

原理:原字符串的Unicode转义顺序为\u05d9\u05ea\uua880\u05e8\u05d0\uua881,反转后变为\uua881\u05d0\u05e8\uua880\u05ea\u05d9,解码后正好匹配希伯来语的RTL阅读顺序。

二、正确抓取希伯来语文本的方案

网页通过自定义WOFF字体映射占位符字符,直接抓取DOM文本只能得到无效占位符,需解析字体文件还原真实字符:

步骤1:提取字体文件URL

查看网页源码,找到@font-face规则中的字体源地址,示例格式:

@font-face {
    font-family: 'CustomHebrew';
    src: url('/path/to/hebrew-font.woff') format('woff');
}

步骤2:解析字体映射关系

使用fonttools库解析字体文件,提取占位符(如U+A880、U+A881)对应的真实希伯来语字符:

from fontTools.ttLib import TTFont
import requests

# 下载字体文件
font_url = "https://777codes.com/path/to/hebrew-font.woff"
font_file = requests.get(font_url).content
with open("hebrew-font.woff", "wb") as f:
    f.write(font_file)

# 解析字体获取字符映射
font = TTFont("hebrew-font.woff")
cmap = font.getBestCmap()
# 整理占位符到真实字符的映射(需根据实际字体调整)
char_mapping = {
    chr(0xA880): chr(0x05E9),  # ꢀ → ש
    chr(0xA881): chr(0x05D1),  # ꢁ → ב
    # 补充其他占位符的映射关系
}

步骤3:批量替换并修正文本顺序

抓取页面文本后,替换占位符并处理RTL顺序:

page_content = requests.get("https://777codes.com/newtestament/gen1.html").text
# 批量替换所有占位符
for placeholder, real_char in char_mapping.items():
    page_content = page_content.replace(placeholder, real_char)

# 对单个希伯来语单词修正顺序(直接反转即可)
def fix_rtl_word(word):
    return word[::-1]

# 示例:处理提取到的目标单词
raw_word = "יתꢀראꢁ"
replaced_word = raw_word.replace("\ua880", "\u05e9").replace("\ua881", "\u05d1")
corrected_word = fix_rtl_word(replaced_word)
print(corrected_word)  # 输出:בראשית

内容的提问来源于stack exchange,提问作者ShaneO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:21:35