我试图单独反转字符串中的单词,这样单词仍然按顺序反转,例如"我的名字是"输出" ih ym eman si"但整个字符串都被翻转
r = 0
def readReverse(): #creates the function
start = default_timer() #initiates a timer
r = len(n.split()) #n is the users input
if len(n) == 0:
return n
else:
return n[0] + readReverse(n[::-1])
duration = default_timer() - start
print(str(r) + " with a runtime of " + str(duration))
print(readReverse(n))
答案 0 :(得分:0)
首先使用正则表达式similar to this将字符串拆分为单词,标点符号和空格。然后,您可以使用生成器表达式单独反转每个单词,最后将它们与str.join
一起加入。
import re
text = "Hello, I'm a string!"
split_text = re.findall(r"[\w']+|[^\w]", text)
reversed_text = ''.join(word[::-1] for word in split_text)
print(reversed_text)
输出:
olleH, m'I a gnirts!
如果你想忽略标点符号,你可以省略正则表达式,只需拆分字符串:
text = "Hello, I'm a string!"
reversed_text = ' '.join(word[::-1] for word in text.split())
然而,逗号,惊叹号等将成为单词的一部分。
,olleH m'I a !gnirts
这是递归版本:
def read_reverse(text):
idx = text.find(' ') # Find index of next space character.
if idx == -1: # No more spaces left.
return text[::-1]
else: # Split off the first word and reverse it and recurse.
return text[:idx][::-1] + ' ' + read_reverse(text[idx+1:])