我正在编写一个迷你diceware程序,旨在从用户那里获取真实骰子的输入,查找值,并打印出他们的diceware密码。
我目前的代码工作正常,通过搜索5位数的diceware标识符(例如34465 jilt)从单词列表中提取数字和单词。
但是,我希望将密码短语打印成一行,而不是数字关联。例如如
“jilt load re open snap”而不是
34465 jilt
加载等
目前这是我正在使用的代码:
p_length = int(raw_input("How many dicewords?"))
roll_list = []
for i in range(p_length):
seq1 = (raw_input("roll 1:"), raw_input("roll 2:"),
raw_input("roll 3:"), raw_input("roll 4:"),
raw_input("roll 5:"))
str1 = "".join(seq1)
roll_list.append(str1)
print roll_list
with open("name_list.txt") as f:
for line in f:
for x in roll_list:
if x in line:
print line
有关如何改变最后几行以做我希望的建议吗?
感谢split()建议。这是我的解决方案:
passphrases = []
with open("name_list.txt") as f:
for line in f:
for x in roll_list:
if x in line:
var1 = line.split(" ")
var2 = var1.pop( )
passphrases.append(var2.rstrip('\n'))
print " ".join(passphrases)
答案 0 :(得分:1)
您可以使用split
分解line
并仅提取数字中的单词。
答案 1 :(得分:1)
你可以在这里使用any
。更新仅用于修复。
for line in f:
if any(i for i in roll_list if i in line.strip()):
print line.strip().split(" ")[-1]
>>>hold romeo