我需要将一个纯文本UTF8文档从R语言改为L语言。不幸的是,这不像汉字音译那么容易。
例如,R到L语言(ا)中的“a”可以是“a”或“ә”,这取决于单词的构成。在
用g、k、e或hamza(گ،ك،ە،ء)表示的单词
我需要把所有的a,o,I,u(ا1548;و1548;ى،)改成拉丁语ә,ѳ,I,ü(称为“软”元音)。
例如,الەم变成sәlêm,ءۇيي¨زمەن成为sѳzmê
在没有g、k、e或hamza的单词中(گ،1603;،ە،ء)
a,o,i,u变为拉丁字母a,o,i,u(称为“硬”元音)。
例如,الما变为alma,ۇل变为ul,وПا变为orta。在
本质上,
g、k、e或hamza在阿拉伯语中充当发音指南。
在拉丁语中,我需要两组不同的元音,这取决于阿拉伯语中的原始单词。在
我在想我可能需要做“软”元音单词作为第一步,然后在文档的其余部分进行单独的查找和替换。但是,我如何用perl或python进行这样的查找和替换呢?在
这是一个统一的例子:U+0633\U+0627\U+0627\U+0644\U+0644\U+06D5\U+0645\U+0648\U+0631\U+062A\U+0627\U+0627\U+0674\U+0674\U+06C7\U+064A\U+0633\U+0648\U+0632\U+0632\U+0645\U+060645\U+0645\U+0627\U+0644\U+0644\U+0644\U+0645\U+0645\U+0627\U+0627\U+06C7\U+0644\U+0644\U+0645\U+06D5\U+06D5\U+\U+06AD\U+0627\U+062A\U+0649\U+0645\U+0634\U+0627\U+0644\U+0642\U+0627\U+0631。在
它应该看起来像:“sәlәm ortaüy sѳn alma ul mêning atim xalқar”(注:字母ڭ,即U+06AD,实际上是两个字母,n+g,发出“-ng”音)。它不应该看起来像“salêm orta uy sozm|n alma ul mêning atim xalқar”,也不应该像“sәl mѳrtәy sѳnәlmәl mәl mәtim xәlәr”。在
非常感谢你的帮助。在
命令:
输出:
^{pr2}$要使用文件而不是stdin/stdout:
其中
arabic-to-latin
文件:要使
arabic-to-latin
文件可执行:我不会说perl或python(或阿拉伯语),但这是您可以使用的基本思想(使用Javascript,但是应该可以翻译成任何用回调代替的语言):
也就是说,将输入拆分为单词,然后根据单词是否包含特定字符,使用两个翻译表中的一个替换该单词中的每个符号。正则表达式可用于两者,也可以按单词边界拆分并在单词内进行替换(同时使用等效的
indexOf
进行分支)。在以下是不使用回调的方法(如果Javascript中的字符串是可变的):
^{pr2}$您可以使用序号映射构建自己的翻译表来替换字符,对于每一组字符,您需要一个单独的表(用于元音)。这只是一个局部的例子,但应该能让你知道如何去做。在
注意您需要为其他字符指定转换表。如果需要,还可以将一个阿拉伯字符翻译成多个拉丁字符。如果将输出与请求进行比较,则转换表中的所有字符似乎都正确匹配。在
相关问题 更多 >
编程相关推荐