Python实现随机拼接Cewl词表中3个单词的方法求助
新手友好的解决方案:Python随机拼接词表单词生成新词表
Hey there! 刚学Python一个半小时就能动手做密码审计相关的脚本,已经超棒啦😉 你的代码现在能输出三个随机单词,但没法拼接的问题很容易解决,我一步步给你讲清楚:
问题分析
你当前的代码每次都重新打开文件并随机选一个单词,然后分开打印,所以三个单词是独立输出的,没有合并成一个字符串。咱们先优化文件读取,再实现拼接,最后还能生成完整的新词表。
分步解决方案
1. 先把词表一次性读入列表(更高效)
重复打开文件没必要,咱们先把test.txt里的所有单词存到一个列表里,之后操作都用这个列表:
import random # 用with语句安全打开文件,自动关闭,新手也不容易出错 with open("test.txt", "r") as f: # read()读取全部内容,split()按空格/换行分割成单词列表 word_list = f.read().split()
2. 随机选取3个单词(两种情况可选)
- 允许单词重复:比如同一个单词可以出现多次,用
random.choice()三次:word1 = random.choice(word_list) word2 = random.choice(word_list) word3 = random.choice(word_list) - 不允许单词重复:三个单词都不一样,用
random.sample()直接选3个:# 一次性获取3个不重复的单词,直接解包到变量里 word1, word2, word3 = random.sample(word_list, 3)
3. 拼接单词(无分隔符)
有两种简单的方式把三个单词拼起来:
- 用
+直接连接字符串:combined_password = word1 + word2 + word3 - 用
''.join()(更Pythonic的写法,适合多个字符串拼接):# 把三个单词放到列表里,用空字符串连接 combined_password = ''.join([word1, word2, word3])
4. 生成新词表(可选,批量生成组合)
如果要生成多个拼接后的密码并存到新文件里,比如生成100个,这样写:
# 打开新文件准备写入,"w"表示覆盖写入(如果文件不存在会新建) with open("new_password_list.txt", "w") as output_file: # 循环100次,生成100个组合 for _ in range(100): # 这里用不重复的例子,你可以换成允许重复的写法 selected_words = random.sample(word_list, 3) combined = ''.join(selected_words) # 每个组合写一行,方便后续工具使用 output_file.write(combined + "\n")
完整示例代码(生成单个拼接结果)
import random # 读取词表到列表 with open("test.txt", "r") as f: word_list = f.read().split() # 选3个不重复的单词(换成choice就是允许重复) word1, word2, word3 = random.sample(word_list, 3) # 拼接并打印 combined = word1 + word2 + word3 print("生成的拼接密码:", combined)
慢慢摸索,你已经在正确的路上啦!
内容的提问来源于stack exchange,提问作者ReefNerd
相关产品推荐
相关产品推荐

