【问题标题】:Condense list into string : ['z','y','x'...] -> 'zyx...' ? Python (2.7.1)将列表压缩成字符串: ['z','y','x'...] -> 'zyx...' ?蟒蛇(2.7.1)
【发布时间】:2011-08-09 05:03:27
【问题描述】:

如果我有 list='abcdedcba'

我想要: a=z, b=y, c=x, d=w, e=v 所以它会转化为:

translate='zyxwvwxya'

我该怎么做? 如果我构建一个字典

>>> d=dict(zip(('a','b','c','d','e'),('z','y','x','w','v')))

然后输入

>>> example= d[x] for x in list
>>> print translate
['z', 'y', 'x', 'w', 'v', 'w', 'x', 'y', 'z']

我如何将它恢复到表单中

translate='zyxwvwxyz'

?

【问题讨论】:

    标签: python string list translate letters


    【解决方案1】:
    the_list = ['z', 'y', 'x', 'w', 'v', 'w', 'x', 'y', 'z']
    print "".join(the_list)
    

    【讨论】:

      【解决方案2】:

      对于单字母替换,请使用字符串模块中的maketranstranslate。它们的操作类似于 unix tr 命令。加入一个空分隔符是最后一步的正确答案,但对于这个确切的任务不是必需的。

      【讨论】:

        【解决方案3】:
        ''.join(translate)

        我不确定这是你想要的吗?

        【讨论】:

          【解决方案4】:

          使用maketrans和translate的例子:

          >>> import string
          >>> table = string.maketrans('abcdef', 'zyxwvu')
          >>> 'abdedddfdffdabe'.translate(table)
          'zywvwwwuwuuwzyv'
          

          假设您要替换 ASCII 字母表中的所有字母:

          import string
          reversed_ascii_letters = string.ascii_letters[::-1]
          # reorder lowercase and uppercase
          reversed_ascii_letters = reversed_ascii_letters[26:] + reversed_ascii_letters[:26]
          table = string.maketrans(string.ascii_letters, reversed_ascii_letters)
          data = 'The Quick Brown Fox Jumped Over the Lazy Dog'
          print data.translate(table)
          

          【讨论】:

          • 'abdedddfdffdabe'translate() 方法,所以你可以使用'abdedddfdffdabe'.translate(table)
          • 所以我可以跳过字典步骤?
          【解决方案5】:
          >>> import string
          >>> table = string.maketrans(string.lowercase, string.lowercase[::-1])
          >>> 'abcdedcba'.translate(table)
          'zyxwvwxyz'
          

          【讨论】:

            【解决方案6】:
            >>> import string
            >>> letters = string.lowercase
            >>> letters
            'abcdefghijklmnopqrstuvwxyz'
            >>> def revert_string(s):
                s_rev = ''
                for c in s:
                    s_rev += letters[len(letters) - 1 - letters.find(c)]
                return s_rev
            
            >>> s = 'zearoizuetlkzjetkl'
            >>> revert_string(s)
            'avzilrafvgopaqvgpo'
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-12
              • 2022-06-17
              • 1970-01-01
              • 2018-11-23
              相关资源
              最近更新 更多