【问题标题】:Python wordlist permutationPython 词表排列
【发布时间】:2015-12-06 03:32:26
【问题描述】:

我怎样才能让这个脚本从列表中置换最多 3 个单词组合?

List.txt 由 4 个字符串组成:

pass
10
test
word

而不是组合所有从一到四个单词,即

output > pass10wordtest, 10testpassword,....etc

我希望最终的组合是:

output > testpassword, passtestword, 10wordtest,....etc

我的代码:

from itertools import permutations
import os

# GET FILE
script_dir = os.path.dirname(os.path.realpath(__file__))
wordlist_rel_path = "List.txt"
wordlist_abs_file_path = os.path.join(script_dir, wordlist_rel_path)

# READ WORD LIST FROM FILE
word_list = []
print ("\ninput file is:", wordlist_abs_file_path,"\n")
with open(wordlist_abs_file_path) as wordlist:
     for line in wordlist:
         word_list.append(line.rstrip())

# PRINT INPUT LIST
print ("input list contains:")
print(word_list,"\n")

# GENERATE POWERSET
powerset_list = []
print ("output list is:")
for n in range(1, len(word_list)+1):
     for perm in permutations(word_list, n):
         powerset_list.append( "".join(perm) )
print(powerset_list)

# WRITE LIST TO FILE
powerset_rel_path = "powerset.txt"
powerset_abs_file_path = os.path.join(script_dir, powerset_rel_path)
powerset_abs_file = open(powerset_abs_file_path, 'w')
for item in powerset_list:
     powerset_abs_file.write("%s\n" % item)
powerset_abs_file.close()

【问题讨论】:

    标签: python permutation permute


    【解决方案1】:

    如何从列表中排列最多 3 个单词组合?

    permutations 函数支持第二个参数一次只选择三个输入:

    >>> from itertools import permutations
    >>> for group in permutations(['pass', '10', 'test', 'word'], 3):
            print(''.join(group))  
    
    pass10test
    pass10word
    passtest10
    passtestword
    password10
    passwordtest
    10passtest
    10password
    10testpass
    10testword
    10wordpass
    10wordtest
    testpass10
    testpassword
    test10pass
    test10word
    testwordpass
    testword10
    wordpass10
    wordpasstest
    word10pass
    word10test
    wordtestpass
    wordtest10
    

    【讨论】:

      【解决方案2】:
      from itertools import permutations
      import os
      
      # GET FILE 
      script_dir = os.path.dirname(os.path.realpath(__file__))
      wordlist_rel_path = "List.txt"
      wordlist_abs_file_path = os.path.join(script_dir, wordlist_rel_path)
      
      # READ WORD LIST FROM FILE
      word_list = [] print ("\ninput file is:", wordlist_abs_file_path,"\n")
      with open(wordlist_abs_file_path) as wordlist:
           for line in wordlist:
               word_list.append(line.rstrip())
      
      # PRINT INPUT LIST 
      print ("input list contains:")
      print(word_list,"\n")
      
      # GENERATE POWERSET 
      powerset_list = []
      print ("output list is:") 
      for n in range(1, len(word_list)+1):
           for perm in permutations(word_list,3):
               powerset_list.append( "".join(perm) ) print(powerset_list)
      
      # WRITE LIST TO FILE 
      powerset_rel_path = "powerset.txt" 
      powerset_abs_file_path = os.path.join(script_dir, powerset_rel_path) 
      powerset_abs_file = open(powerset_abs_file_path, 'w') for item in powerset_list:
      powerset_abs_file.write("%s\n" % item) powerset_abs_file.close()
      

      【讨论】:

        猜你喜欢
        • 2021-01-11
        • 1970-01-01
        • 2019-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多