用Python搜索并替换文件中的字符

2024-05-20 11:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试进行音译,我需要将文件中的每一个源字符替换为源代码中与Unicode格式的另一种语言相对应的词典中的每个源字符。我现在能够从一个英文文件中逐字阅读我如何在源代码中定义的字典中搜索它的等价映射,并确保它打印在一个新的音译输出文件中。谢谢:)。在


Tags: 文件语言音译字典定义源代码格式unicode
2条回答

注:发问者澄清后更新。请阅读附在本答案后面的评论。在

像这样:

for syllable in input_text.split_into_syllables():
    output_file.write(d[syllable])

这里output_file是一个文件对象,打开进行写入。d是一个字典,其中索引是源字符,值是输出字符。您也可以尝试逐行读取文件,而不是一次全部读取。在

Unicode对象的translate方法是执行所需音译的最简单和最快的方法。(我假设您使用的是Unicode,而不是纯字节字符串,这样就不可能有'पत्र')这样的字符。在

你所要做的就是精确地编排你的音译词典,正如我所指的文档中所规定的那样:

  • 每个键必须是一个整数,即Unicode字符的代码点;例如,0x0904是的代码点,也就是“天成文书(DEVANAGARI)字母SHORT a”,因此在音译时,您可以使用整数0x0904(相当于十进制2308)作为dict中的键。(对于包含许多南亚脚本的代码点的表,请参见this pdf)。

  • 相应的值可以是Unicode序号,一个Unicode字符串(如果您想将天成文书字母short a音译成英文字母'a',那么这可能是您将用于音译任务的Unicode字符串,例如u'a'),或者没有(如果在“音译”过程中您想简单地删除该Unicode字符的实例)。

在dict中找不到作为键的字符从输入传递到输出。在

一旦你的口述是这样安排的,output_text = input_text.translate(thedict)为你完成所有的音译,而且速度非常快。您可以将此方法应用于任何大小的Unicode文本块,这些文本块可以很方便地存储在内存中基本上一次只处理一个文本文件就可以了(例如。,奇妙而巨大的摩诃婆罗多最多需要几十兆字节的任何一种自由下载的梵语形式[[与天成文书和罗马音译形式交叉链接]],英文翻译可从this site获得)。在

相关问题 更多 >