转发:牛津高阶双解第四版光盘数据简单分析和提取

厉害,辛苦tsiank了。我以前在校改牛高4的时候动过重新从光盘提取文本的念头,但没装虚拟机,高估了原始光盘加密的水平,也低估了从垃圾文件底本校改修正的巨大工作量,结果掉进了一个天坑。

貌似tsiank提取的html文件没有修正音标,我此前写过一个相关script,应该继续有效,贴在这里。

#!/usr/bin/env python
# -*- coding: utf-8 -*-


"""
OALD4原始文档音标使用了"Kingsoft Phonetic Plain"字体,
导致不安装该字体的电脑会出现乱码,在此批量替换修正。
金山词霸音标字体编码表可参见 http://www.fmddlmyy.cn/text66.html ,
不过在此处改正OALD4使用的替换表略有不同。

"""


import re


def converter(match):
    phonetic_string = match.group()
    correct_symbol = phonetic_string.replace('5', 'ˈ')\
        .replace('7', 'ˌ').replace('9', 'ˌ')\
        .replace('A', 'æ').replace('B', 'ɑ')\
        .replace('C', 'ɒ').replace('E', 'ə')\
        .replace('F', 'ʃ').replace('I', 'ɪ')\
        .replace('J', 'u').replace('N', 'ŋ')\
        .replace('Q', 'ʌ').replace('R', 'ɔ')\
        .replace('T', 'ð').replace('U', 'ʊ')\
        .replace('V', 'ʒ').replace('W', 'θ')\
        .replace('Z', 'ɛ').replace('\\', 'ɜ')\
        .replace('^', 'ɡ').replace(':', 'ː')\
        .replace('[', 'ɝ').replace('L', 'ɚ')\
        .replace('?@', 'US').replace('`', 'ˈ')

    return correct_symbol


def main():
    file_src = r'C:\Users\xxx\Desktop\01.txt'
    file_dst = r'C:\Users\xxx\Desktop\02.txt'

    with open(file_src, 'r', encoding='UTF-8') as f:
        text = f.read()

        p = re.compile('/ <pho>.*?</pho>/')

        result = re.sub(p, converter, text)

    with open(file_dst, 'w', encoding='UTF-8') as fo:
        fo.write(result)


if __name__ == '__main__':
    main()
5 个赞