字符串中的反向字 - 相同的顺序 - 包括空格

时间:2015-01-25 12:55:05

标签: python string

我试图反转给定字符串中包含的每个单词的字母,保持相同的单词顺序并保持相同的空格。

因此'This is an example!'应该返回:'sihT si na !elpmaxe'(注意每个单词之间有两个空格)。

我写的解决方案没有处理这个空白:

def reverse_words(str1):
    list1 = str1.split()
    list2 = []
    for e in list1:
        e = e[::-1]
        list2.append(e)
    return ' '.join(list2)

2 个答案:

答案 0 :(得分:5)

如果要保留空白区域,请使用正则表达式:

>>> import re
>>> s = 'This is an example!'
>>> re.sub(r'\S+', lambda m:m.group(0)[::-1], s)
'sihT si na !elpmaxe'
>>> s = 'This is an    example!'
>>> re.sub(r'\S+', lambda m:m.group(0)[::-1], s)
'sihT si na    !elpmaxe'

答案 1 :(得分:4)

要在没有正则表达式的情况下执行此操作,请注意str.split将在没有显式参数的情况下对连续的空白进行分组。为了避免这种情况,特别是在空格上分开请注意,您可以使用list comprehension

缩短整个功能
def reverse_words(string): # don't name your own object str
    return ' '.join([word[::-1] for word in 
                     string.split(' ')])