2015-09-10 17 views
5

Wie kann ich dieses Skript zu maximal 3 Kombination von Wörtern aus einer Liste zu permutieren?Python Wortliste Permutation

List.txt besteht aus 4 Strings:

pass 
10 
test 
word 

Statt alle die Kombination von einem bis vier Wörter, dh

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

ich die endgültige Kombination sein wollen:

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

Mein Code:

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() 

Antwort

6

Wie kann ich maximal 3 Wortkombinationen aus einer Liste permutieren?

Die permutations Funktion unterstützt ein zweites Argument nur drei Eingänge zu einem Zeitpunkt, zu wählen:

>>> 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 
+1

großen Werke! Vielen Dank! – sfad

1
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()