我如何单独反转每个单词而不是整个字符串

时间:2017-11-02 16:05:43

标签: python-3.x reverse

我试图单独反转字符串中的单词,这样单词仍然按顺序反转,例如"我的名字是"输出" 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))

1 个答案:

答案 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:])