我想创建一个函数来返回用户输入但没有任何元音的文本,不管它是用大写还是小写写的。
然后作为额外的,我想投资它,但我认为这更容易。
这是我的代码:
def invertirSinVocales():
vocales = ("a", "e", "i", "o", "u", "A", "E", "I", "O","U")
texto = (input("ingrese un texto: "))
while vocales in texto:
texto2= texto.replace(vocales,"")
return texto2
print(invertirSinVocales())
问题是它告诉我它期望“元音”是一个 str 并且它实际上是一个元组。
你好试试这个看看是否是你需要的:
还有几个“噱头”选项:
使用
str.traslate
:str.maketrans
允许您创建一个表格,用于将每个字符替换为与其对应的字符。接收字典,其中的对clave: valor
是:因为在这种情况下我们想要消除它们,所以它的形式是:
这就是你创造
dict.fromkeys('aeiouAEIOUüáéíóúÜÁÉÍÓÚ')
的。就其本身而言str.maketrans
,它返回一个类似的字典,但将键转换为数值(每个字符的 unicode 代码点)。str.translate
它简单地遍历字符串并使用表将每个字符更改为它所属的字符,并在完成时返回新字符串。将正则表达式与
re.sub
:`一起使用这不需要太多解释,它在字符串中搜索模式的每个匹配项并将其替换为第二个参数(在这种情况下为空字符串)。该标志
re.IGNORECASE
使其在查找模式匹配时不区分大小写。您可以像这样使用“列表推导”(使用@FJsevilla 的建议更新):
希望对您有所帮助,如果您有任何疑问,可以发表评论。
西班牙语解释:
"".join()
: 加入列表中的元素,用字符分隔它们""
[nv for nv in texto if nv not in vocales]
:如果在列表中找不到字符串中的每个字符 (nv
),则将其添加到列表中。texto
nv
vocales
这,写成
for
传统的将是:你好,你可以这样做:
结果:
说明: removeVocales函数接收一个单词作为参数,然后通过for循环我们遍历该单词,并通过一个条件,如果我们验证在转换为小写 (.lower) 后是否有任何元音。
我希望它对你有用,祝你好运!
这是一个非常简单的方法: