Changing multiple characters by other characters in a string

后端 未结 3 1337
醉话见心
醉话见心 2021-01-13 07:13

I\'m trying to manipulate a string.

After extracting all the vowels from a string, I want to replace all the \'v\' with \'b\' and all the \'b\' with \'v\' from the

3条回答
  •  情深已故
    2021-01-13 07:48

    Python's comprehension and generator expressions are quite powerful.
    You can do the vowel removal the same time as you do the join():

    >>> volString = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}
    >>> s = 'accveioub'
    >>> ''.join(c for c in s if c not in volString)
    'ccvb'
    

    In fact you do the swap in the join() too but this maybe a little too verbose:

    >>> ''.join('v' if c == 'b' else 'b' if c == 'v' else c for c in s if c not in volString)
    'ccbv'
    

    You could pull out the swap code into a mapping dict (dict.get(k, v) returns v if k is not in the dictionary):

    >>> vbmap = {'b': 'v', 'v': 'b'}
    >>> ''.join(vbmap.get(c, c) for c in s if c not in volString)
    'ccbv'
    

    The advantage being these solutions avoid all the intermediate string creations.

提交回复
热议问题