我试图反转给定字符串中包含的每个单词的字母,保持相同的单词顺序并保持相同的空格。
因此'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)
答案 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(' ')])