【问题标题】:How to generate a range of strings from aa... to zz如何生成从 aa... 到 zz 的一系列字符串
【发布时间】:2013-04-24 10:22:26
【问题描述】:

我正在尝试创建一个 Python 程序,它接受一个字符串并基于该字符串显示排列。

例如。

如果用户输入“[AAA] Grim”,它应该会生成从“aaa Grim”开始的单词,然后是“aab Grim”,然后是“aac Grim”到“zzz Grim”等。 或者如果用户输入“[AA] Grim”,它应该生成“aa Grim”、“ab Grim”、“ac Grim”到“zz Grim”

抱歉,问题标题不清楚。如果没有示例,我不确定如何表达我的要求。 :)

【问题讨论】:

  • 如果用户输入“死神”?不管怎样,看看itertools.product。您可以将其应用于string.ascii_lowercaseascii_uppercase
  • 我已经编辑了你的标题和标签。另外,您对如何解决这个问题有任何想法吗?

标签: python string


【解决方案1】:
input = '[AAA] Grim'
n = len(input.split(' ')[0]) - 2
s = input[n+2:]
a = [''.join(x)+s for x in itertools.product(string.ascii_lowercase, repeat=n)]

【讨论】:

    【解决方案2】:

    如果我理解你的意思,下面会做:

    import re
    import string
    import itertools
    
    user_in = input("Enter string: ")
    p_len = user_in.index(']') - user_in.index('[')
    text = user_in[user_in.index(']')+1:]
    print('\n'.join([ ''.join(p) + text for p in itertools.combinations_with_replacement(string.ascii_lowercase,r=p_len-1)]))
    

    将产生(提取物):

    Enter string: [AA] Grim
    aa Grim
    ab Grim
    ac Grim
    ad Grim
    ae Grim
    

    【讨论】:

      【解决方案3】:
      >>> import string
      >>> ltrs = string.lowercase
      >>> [''.join([a,b]) for a in ltrs for b in ltrs]
      

      代码来自这里:https://mail.python.org/pipermail/tutor/2005-July/040117.html

      我找到了,效果很好!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-11
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        相关资源
        最近更新 更多