2015-01-21 2 views
0

안녕하세요. 암호 변형을 인쇄하는 코드를 만들었습니다. 그러나 거기에 일반적인 암호가 많은 텍스트 파일에서 여러 암호를 읽는 데 문제가 있습니다. 나는 기본적으로는 한 번에 텍스트 파일 1 개 라인의 각 항목을 읽을 때 그것의 많은 변이를 수행 할 내가 오류를 받고 있어요 이유는 확실하지 않다KeyError : ' n'Python, String Mutation Generator

from itertools import product 
for password in commonpasswords: 
    allPossible = list(mapping[letter] for letter in password) 

: 여기 내 코드입니다 가능한 다음 다음으로 이동하십시오. 파일에는 소문자 단어 만 들어 있으며 각 항목은 별도의 줄에 있습니다. 감사.

편집 : 그러나이 작동하지 않는 것

total = total + len(allPossible) 
print(total) 

: 나는 또한 문제 전체를 생성하는 데 문제가, 나는 모두 인쇄 기능을 제거, 루프의 끝 부분에이 코드를 추가 한 , 돌연변이의 총 개수는 내가 후인 숫자입니다. 감사.

+0

잘 보인다 개조를 ... – MightyPork

+0

Traceback을 게시하십시오. – wwii

+0

새 질문으로 질문하면 더 많은 사람들이 대답을 더 많이 수집 할 수 있습니다. –

답변

3

파일에서 임의의 줄을 읽을 때마다 자동으로 \n이 끝납니다. 따라서 전에 \n을 제거해야합니다. 같은 루프의 시작 라인, password.strip('\n') 추가

for password in commonpasswords: 
    password = password.strip('\n') 

(또는 당신이 allPossible = list(product(*([letter] + mapping[letter] for letter in password[:-1))) 같이 password[:-1]을 할 수있는 마지막 단어가 항상 같은)는 라인을 읽고처럼

+0

'rstrip'은 더 좋을 것입니다. –

+0

@PadraicCunningham 다른 답변에는'rstrip'이 포함되어 있으므로 게시하지 않았습니다. :( –

+1

롤 충분히 –

2
for password in commonpasswords: 
    password = password.rstrip('\n')