【问题标题】:Reverse each word in a string反转字符串中的每个单词
【发布时间】:2011-12-10 17:28:30
【问题描述】:

我的代码有一个小问题。我正在尝试反转字符串的单词和字符。例如“the dog ran”会变成“ehT god nar”

代码几乎可以工作。它只是不添加空格。你会怎么做?

def reverseEachWord(str):
  reverseWord=""
  list=str.split()
  for word in list:
    word=word[::-1]
    reverseWord=reverseWord+word+""
  return reverseWord 

【问题讨论】:

    标签: python string


    【解决方案1】:

    你在正确的轨道上。主要问题是"" 是一个空字符串,而不是一个空格(即使你解决了这个问题,你也可能不想在最后一个单词后面有空格)。

    以下是更简洁的方法:

    >>> s='The dog ran'
    >>> ' '.join(w[::-1] for w in s.split())
    'ehT god nar'
    

    【讨论】:

    • 如果句子的单词之间有两个空格,则不起作用。
    【解决方案2】:

    您还可以使用re 模块处理字符串中的噪声:

    >>> import re
    >>> s = "The \n\tdog \t\nran"
    >>> " ".join(w[::-1] for w in re.split(r"\s+", s))
    'ehT god nar'
    

    或者如果你不在乎:

    >>> s = "The dog ran"
    >>> re.sub(r"\w+", lambda w: w.group(0)[len(w.group(0))::-1], s)
    'Teh god nar'
    

    【讨论】:

      【解决方案3】:
      def reversed_words(sequence):
          return ' '.join(word[::-1] for word in sequence.split())
      
      >>> s = "The dog ran"
      >>> reversed_words(s)
      ... 'ehT god nar'
      

      【讨论】:

      • 哈。几乎与@aix 相同。被打败了。
      • 而且它也不适用于单词之间有两个空格的句子。
      【解决方案4】:
      def reverse_words(sentence):        
           return " ".join((lambda x : [i[::-1] for i in x])(sentence.split(" ")))
      

      【讨论】:

        【解决方案5】:

        另一种方法是在您的单词reverseWord=reverseWord+word+" " 中添加一个空格,并使用.strip() 删除输出末尾的空格

        def reverse_words(str):
          reverseWord = ""
          list = str.split()
          for word in list:
            word = word[::-1]
            reverseWord = reverseWord + word + " "
          return reverseWord.strip()
        

        查看post 了解其使用方法

        【讨论】:

          【解决方案6】:
          name=input('Enter first and last name:')
          for n in name.split():
              print(n[::-1],end=' ')
          

          【讨论】:

          • 一般来说,“仅代码”的答案被认为是不好的做法。请稍微介绍一下您的代码的作用以及它如何帮助解决问题。
          【解决方案7】:

          下面的程序没有使用 join/split :

          def reverse(sentence):
              answer = ''
              temp = ''
              for char in sentence:
                  if char != ' ':
                      temp += char
                      continue
                  rev = ''
                  for i in range(len(temp)):
                      rev += temp[len(temp)-i-1]
                  answer += rev + ' '
                  temp = ''
              return answer + temp
          reverse("This is a string to try")
          

          【讨论】:

            【解决方案8】:

            x = input("输入任意句子 :: :: ")

            y = x.split(' ')

            对于我在 y 中:

            r = i[::-1]
            print(r,end=" ")
            

            【讨论】:

            • 输入任何句子 :: :: 输入 :: 男孩是女孩输出 :: yob si lrig
            猜你喜欢
            • 1970-01-01
            • 2015-06-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-28
            • 2013-11-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多