一、音标字符准备
网络搜索的含音标字符的字符串段落
2.48个国际音标字符
2.1. 20个元音
/ɑ:/ /ʌ/ /ɔ:/ /ɒ/ /ə/ /ɜ:/ /i:/ /ɪ/ /u:/ /ʊ/ /e/ /æ/ /eɪ/ /aɪ/ /ɔɪ/ /ɪə/ /eə/ /ʊə/ /əʊ/ /aʊ/2.2. 28个辅音
/p/ /b/ /t/ /d/ /k/ /g/ /f/ /v/ /s/ /z/ /θ/ /ð/ /ʃ/ /ʒ/ /tʃ/ /dʒ/ /tr/ /dr/ /ts/ /dz/ /m/ /n/ /ŋ/ /h/ /l/ /r/ /j/ /w/
从字符串段落中提取的48个音标字符
ɑ: ʌ ɔ: ɒ ə ɜ: i: ɪ u: ʊ e æ eɪ aɪ ɔɪ ɪə eə ʊə əʊ aʊ p b t d k g f v s z θ ð ʃ ʒ tʃ dʒ tr dr ts dz m n ŋ h l r j w
Python提取音标详细代码
#!/usr/bin/nve python
# coding: utf-8
'''
filename = 'add_new_word.py'
author = 'dream efl'
time = '2022-08-09'
'''
import re
def find_symbol(re_s, s):
symbol = re.findall(re_s, s) # re从字符串段落中提取音标字符。可能是我的re版本已经默认忽略\n,可以隔行搜索匹配,都不用加re.M参数了。😋
return ' '.join(symbol)
if __name__ == '__main__':
s = '''2. 48个国际音标字符
2.1. 20个元音
/ɑ:/ /ʌ/ /ɔ:/ /ɒ/ /ə/ /ɜ:/ /i:/ /ɪ/ /u:/ /ʊ/ /e/ /æ/ /eɪ/ /aɪ/ /ɔɪ/ /ɪə/ /eə/ /ʊə/ /əʊ/ /aʊ/
2.2. 28个辅音
/p/ /b/ /t/ /d/ /k/ /g/ /f/ /v/ /s/ /z/ /θ/ /ð/ /ʃ/ /ʒ/ /tʃ/ /dʒ/ /tr/ /dr/ /ts/ /dz/ /m/ /n/ /ŋ/ /h/ /l/ /r/ /j/ /w/'''
symbol = find_symbol(r"/(\w*[\:]*)/", s)
print(f"\n从字符串段落中提取的{len(symbol.split()):>3} 个音标字符:\n{symbol}\n")
提取音标字符代码运行效果截屏图

可能是我的Python 3.10.2 环境re 2.2.1版本已经默认忽略\n,可以隔行搜索匹配,都不用加re.M参数了。😋

打印音标字符“表”方法代码
def symbol_show(self):
print(f"\n{self.color(' 音标表 '.center(47, '~'), 92)}\n{'':>10}", end='')
for k,i in enumerate(self.symbol.split()):
print(f"{k:>2}.{self.color(f'{i:>2}', 92)}", end=' ')
if (k+1)%5 == 0: print(f"\n{'':>10}", end='')
print()
print(self.color(' 请输入对应的数字 '.center(42, '~'), 32))
print(self.color('如:21 14 (bɔɪ)'.center(48), 100, 7, 30))
替换序号成音标字符方法代码
def replace_symbol(self, nums):
''' 从音标字符序号还原音标字符 '''
tem = []
symbol = self.symbol.split()
for i in nums:
tem.append(symbol[int(i)])
return ''.join(tem)
单词信息打印方法代码
def word_show(self, word):
''' 单词信息列印 '''
for m,n in zip(self.field.split(), word):
if not n: continue
if m == '音标': n = f"英/{n}/"
print(f"{'':>6}{m}:{n}")
变量及色彩控制打印工具准备
def __init__(self):
from lib.mypycolor import Color
self.color = Color().set_color # 设置色彩控制打印工具方法别名。
self.field = '单词 复数 音标 词性+释义一 词性+释义二 词性+释义三 词性+释义四'
self.demo = 'boy boys bɔɪ n.男孩;儿子;小伙子,家伙; interj. 好家伙(表示激动、羡慕等情感);'
self.symbol = "ɑ: ʌ ɔ: ɒ ə ɜ: i: ɪ u: ʊ e æ eɪ aɪ ɔɪ ɪə eə ʊə əʊ aʊ p b t d k g f v s z θ ð ʃ ʒ tʃ dʒ tr dr ts dz m n ŋ h l r j w \'"
代码实现效果截屏图


非常遗憾,重音符号在Python环境显示有些怪异:

因此我就用英文单引号(ord("’")=39)做读音节,舍弃了次重读符号。因为712、716在我的手机上显示“怪异”,次重读音节用英文逗号“,”,也不太好看,虽然有不少人是这么干的。
上面截屏图片代码
print(chr(int('2c8', 16)), chr(int('2cc', 16)))
print(f"ˈ -> {ord('ˈ')},ˌ -> {ord('ˌ')}")
print("'", '->', ord("'"))
