python how to uppercase some characters in string
Question: Here is what I want to do but doesn't work:

    
    
    mystring = "hello world"
    toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
    array = list(mystring)
    
    for c in array:
        if c in toUpper:
            c = c.upper()
    print(array) 
    

`"e"` and `"o"` are not uppercase in my array.


Answer: You can use the [`str.translate()`
method](https://docs.python.org/2/library/stdtypes.html#str.translate) to have
Python replace characters by other characters in one step.

Use the [`string.maketrans()`
function](https://docs.python.org/2/library/string.html#string.maketrans) to
map lowercase characters to their uppercase targets:

    
    
    try:
        # Python 2
        from string import maketrans
    except ImportError:
        # Python 3 made maketrans a static method
        maketrans = str.maketrans 
    
    vowels = 'aeiouy'
    upper_map = maketrans(vowels, vowels.upper())
    mystring.translate(upper_map)
    

This is the faster and more 'correct' way to replace certain characters in a
string; you can always turn the result of `mystring.translate()` into a list
but I strongly suspect you wanted to end up with a string in the first place.

Demo:

    
    
    >>> try:
    ...     # Python 2
    ...     from string import maketrans
    ... except ImportError:
    ...     # Python 3 made maketrans a static method
    ...     maketrans = str.maketrans 
    ... 
    >>> vowels = 'aeiouy'
    >>> upper_map = maketrans(vowels, vowels.upper())
    >>> mystring = "hello world"
    >>> mystring.translate(upper_map)
    'hEllO wOrld'
    

