加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

从字符串Python中删除字符

发布时间:2020-12-20 12:33:48 所属栏目:Python 来源:网络整理
导读:我正在尝试编写一个函数来摆脱给定字符串中的元音,但它似乎没有按照它应该做的方式行事…… def anti_vowel(text): for c in text: if c in "aeiouAEIOU": no_vowel = text.replace(c,'') return no_vowelprint(anti_vowel('Hello World') 而不是打印 Hll Wr
我正在尝试编写一个函数来摆脱给定字符串中的元音,但它似乎没有按照它应该做的方式行事……

def anti_vowel(text):
    for c in text:
        if c in "aeiouAEIOU":
            no_vowel = text.replace(c,'')
    return no_vowel
print(anti_vowel('Hello World')

而不是打印

Hll Wrld

它打印

Hell Wrld

谢谢(提前)帮助

解决方法

问题是no_vowel只有上次执行text.replace(c,”)的值.另一个问题是no_vowel只有在实际要删除的元音时才获取值;代码将在anti_vowel(‘vwllss’)上失败.此外,在调用str.replace()之前,您不必检查文本中是否包含字符.

这应该工作:

def anti_vowel(text):
    for vowel in "aeiouAEIOU":
        text = text.replace(vowel,'')
    return text
print(anti_vowel('Hello World'))

正如其他人指出的那样,另一种方法是以不同的方式编写代码:

def anti_vowel(text):
    ''.join(c for c in text if c not in 'aeiouAEIOU')

请在’.join()中使用生成器表达式而不是列表推导;这样的列表理解会不必要地分配内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读