单词记忆系统二:音标字符输入(re从字符串中提取音标字符;依序打印音标字符;输入对应序号;替换序号。-> 完成“音标输入”)


Python 官网https://www.python.org/




  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


(re从字符串中提取音标字符;依序打印音标字符;)
音标字符输入
(输入对应序号;替换序号。-> 完成“音标输入”)


目 录


一、音标字符准备

网络搜索的含音标字符的字符串段落


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("'"))

在这里插入图片描述



回首页

__上一篇:__ Python.迭代器对象iter()

__下一篇:__ 十六进制字符串转Python代码

我的HOT博:
推荐条件 点阅破千

回目录


老齐漫画头像

精品文章:

来源:老齐教室


回目录

Python 入门指南【Python 3.6.3】

好文力荐:

CSDN实用技巧博文:


  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值