python how to uppercase some characters in string

前端 未结 9 1402
北荒
北荒 2021-01-21 17:51

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 arr         


        
9条回答
  •  天涯浪人
    2021-01-21 18:29

    You can use the str.translate() method to have Python replace characters by other characters in one step.

    Use the string.maketrans() function 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'
    

提交回复
热议问题