当前位置: 首页 > 面试题库 >

Python:如何在字符串中的每个发音元音前添加字符串“ ub”?

唐照
2023-03-14
问题内容

示例 :说-> Spubeak,更多信息在这里

不要给我一个解决方案,而是指向正确的方向或告诉我可以使用哪个python库?我正在考虑使用正则表达式,因为我必须找到一个元音,但是我可以使用哪种方法在元音前面插入“
ub”呢?


问题答案:

比一个简单的正则表达式更复杂,例如,

"Hi, how are you?" → "Hubi, hubow ubare yubou?"

简单的正则表达式将无法捕获e未在中发音的正则表达式are

您需要一个提供发音词典的库,例如nltk.corpus.cmudict

from nltk.corpus import cmudict # $ pip install nltk
# $ python -c "import nltk; nltk.download('cmudict')"

def spubeak(word, pronunciations=cmudict.dict()):
    istitle = word.istitle() # remember, to preserve titlecase
    w = word.lower() #note: ignore Unicode case-folding
    for syllables in pronunciations.get(w, []):
        parts = []
        for syl in syllables:
            if syl[:1] == syl[1:2]:
                syl = syl[1:] # remove duplicate
            isvowel = syl[-1].isdigit()
            # pronounce the word
            parts.append('ub'+syl[:-1] if isvowel else syl)
        result = ''.join(map(str.lower, parts))
        return result.title() if istitle else result
    return word # word not found in the dictionary

例:

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

sent = "Hi, how are you?"
subent = " ".join(["".join(map(spubeak, re.split("(\W+)", nonblank)))
                   for nonblank in sent.split()])
print('"{}" → "{}"'.format(sent, subent))

输出量

“你好你好吗?” →“ Hubay,hubo ubar yubuw?”

注意:它与第一个示例不同:每个单词都用其音节替换。



 类似资料:
  • 我必须编写一个小程序来删除作为输入的字符串中的重音。我还必须创建一个函数,将每个带重音的字符替换为相应的不带重音的字符,我有一个循环,为main中的每个字符调用该函数: 问题是,如果我在main中提供字符串“é”作为输入,则该字符串被视为大小为2的字符串(参见下面的示例),并且上面的函数被调用两次而不是一次。此外,作为函数输入的char不是正确的。我想我在函数中遇到了相同的大小问题。这个重音不应该

  • 问题内容: 我需要一条SQL更新语句来更新所有行的特定字段,并在现有值的前面添加一个字符串“ test”。 例如,如果现有值为“ try”,则应变为“ testtry”。 问题答案: 您可以使用CONCAT函数来执行此操作: 如果您想更聪明地只更新尚未预先测试的列,请尝试

  • 我试图计算每个字符串中的元音,我想根据count变量交换字符串,但我做不到。在接受字符串后,我用toCharArray()函数将其转换为char数组,并将每个字符与小写和大写元音进行比较。 我收到一个错误。编写代码部分的任何帮助都将不胜感激。 输入: 输出:

  • 输入20个字符串的数组。制作一个程序,打印出辅音多于元音的字符串,其中字母“r”至少重复3次。 我相信问题出在我的 if 循环中,但不知何故我不明白为什么它不能正常工作。它会打印我输入的每个字符串。 这是我写的代码:

  • 问题内容: 我有一个包含二进制数字的字符串。如何将其分成几对数字? 假设字符串是: 我想在每2个字符后添加一个分隔符,例如“:”(即冒号)。 我希望输出为: 我怎么能在Swift中做到这一点? 问题答案: Swift 5.1•Xcode 11或更高版本 测试中

  • 本文向大家介绍如何在Python中从字符串中删除辅音?,包括了如何在Python中从字符串中删除辅音?的使用技巧和注意事项,需要的朋友参考一下 对于此问题,使用正则表达式是最简单的。您可以使用“ |”分隔多个字符 并使用re.sub(chars_to_replace,string_to_replace_with,str)。例如: 注意:您也可以使用[]创建要在正则表达式中替换的字符组。 如果只想保