从字符串中删除元音

时间:2018-05-10 01:16:51

标签: python string replace

我想从所输入的任何字符串中删除所有元音。我正在尝试使代码尽可能简单。

感谢您的帮助。

print "\\exname{"noext"}"

3 个答案:

答案 0 :(得分:8)

所以你在每个角色上调用条带......然后是什么?您不更新字符串,因为字符串是不可变的,i.strip不是就地操作。

对解决方案的天真改进会在列表理解中过滤掉字符,然后对结果执行join

vowels = {'i','o','a','u','e'}
def anti_vowel(text):
    return ''.join([c for c in text if c not in vowels])

小注意:如果你的字符串包含大小写混合,你可能想要

  1. 小写text
  2. vowels扩充为包含大写元音:vowels = set('aeiouAEIOU')
  3. 使用str.casefold(根据@Adam Smith的评论) - 在这种情况下不再需要使用vowels

    return ''.join([c for c in text if c.casefold() not in vowels])
    
  4. 使用str.translate可以更好地甚至(这适用于python-3.x):

    mapping = str.maketrans(dict.fromkeys(vowels, '')) # create a global mapping once
    def anti_vowel(text):
        return text.translate(mapping))
    

答案 1 :(得分:1)

两个问题:

  1. strip是错误的方法;它只从字符串的开头和结尾删除。使用.replace(something, '')
  2. 字符串是不可变的;方法不能修改字符串。 strip 返回修改后的字符串。

答案 2 :(得分:0)

此代码也有效!编写anwser的家伙删除了他们的帖子。羞耻它工作得很好。

liz = ("Totally not going to hitting the big bong at the event")
import re

def anti_vowel(text):
    print re.sub('[aeiou]', '', text)

anti_vowel(liz)

output: 
Ttlly nt gng t httng th bg bng t th vnt