Remove all vowels from a string except an initial character I've written the following code where all vowels are removed from a string except if the string starts with a vowel then this vowel is maintained.

def removeVowels(string):
    output = string[0]

    for char in string[1:]:
        if char.lower() not in 'aeuio':
            output += char
    return output


I was wondering if it's possible to use a list comprehension for this?
removeVowels is not quite an accurate name.  Furthermore, by PEP 8, the official Python style guide, function names should be lower_case_with_underscores unless you have a good reason to deviate.  Therefore, I recommend renaming the function to remove_non_initial_vowels.

Your function crashes on string[0] if the input is an empty string.

I don't recommend writing string[1:], since that would entail making a temporary copy of nearly the entire string.

'aeuio' is a bit weird.  Why not 'aeiou'?  (I assume that for this exercise, you don't care that y is sometimes a vowel, w is a semivowel, and assume that the string contains no diacritics.)

Fundamentally, this operation is a fancy string substitution.  Typically, such substitutions are best done using regular expressions.

import re

def remove_non_initial_vowels(string):
    return re.sub('(?&lt;!^)[aeiou]', '', string, flags=re.I)


The (?&lt;!^) part of the expression is a negative lookbehind assertion that means "not at the beginning of the string".