2014-10-11 161 views
3

我是一個初學程序員,試圖編寫一個將生成隨機密碼的python腳本。但是,即使我聲明瞭編碼#utf-8,我總是會得到一個非ASCII字符錯誤,正如Stack Overflow中的另一個類似問題所述。這是源代碼:非ASCII字符錯誤python

import string 
import random 
#coding: utf-8 
print "Password generator will create a random customizable password." 
print "Choose your options wisely." 
number = int(input("How many letters do you want in your password?")) 
caps = str(input("Do you want capital letters in your password? Y/N")) 
symbols = str(input("Do you want punctuation, numbers and other symbols in your password? Y/N")) 
punctuation = ("!", ".", ":", ";", ",", "?", "'", "@", "£", "$", "«", "»", "~", "^","%", "#", "&", "/", range(0, 11)) 
lowercase = string.ascii_lowercase 
uppercase = string.ascii_uppercase 
if caps == "N": 
    characters = lowercase 
else: 
    characters = uppercase + lowercase 
if symbols == "Y": 
    characters += punctuation 
password = random.sample(characters, number) 
print "The password is", password "." 

這是終端輸出

佩德羅@佩德羅-靈-3521:〜/桌面$蟒passwordgenerator.py

文件 「passwordgenerator.py」,線9 SyntaxError:第9行文件passwordgenerator.py中的非ASCII字符'\ xc2',但未聲明編碼;詳情請見http://www.python.org/peps/pep-0263.html

我查了一下鏈接,但是我不明白一件事,也許是因爲我不是一位母語英語的人,而且自從我不久前開始編程,感謝您的幫助。

+0

使用的raw_input'()'上,而不是'輸入的Python 2.7() '。後者證明了它的輸入,即它的工作原理類似於'eval(raw_input())'。 – jfs 2014-10-11 19:36:56

回答

1

您在標點符號列表中有>><<符號。

這些都是無效的。試着找到自己的Unicode代碼,而不是

http://www.fileformat.info/info/unicode/char/bb/index.htm http://www.fileformat.info/info/unicode/char/ab/index.htm

編輯: 呵呵,別急,這是一個密碼生成器,所以沒有甚至不把雙V形的標點符號清單的一部分,這些在任何密碼中都是無效的。

punctuation = ("!", ".", ":", ";", ",", "?", "'", "@", "$", "~", "^", "%", "#", "&", "/", range(0, 11)) 

另外,爲什麼你要添加數字到標點符號?

爲什麼不使用string.punctuation和string.digits來代替?

+0

因此,在你給我的鏈接中說「在Python源代碼中你是\ u00AB」而你是\ u00BB 「我應該在」「還是不包括」 – chilliefiber 2014-10-11 18:45:28

+0

看到我的更新 – 2014-10-11 18:49:09

+0

我刪除了它們,但它仍然不起作用,我得到了相同的錯誤 – chilliefiber 2014-10-11 18:57:07

5

#coding: utf-8行需要位於文件的頂部以允許非ASCII字符。

£,«»不是ASCII。

雖然您可能不想在您的密碼中使用非ASCII字符,並且在大多數網站上都不允許這些字符,但理論上不允許它們被允許。

0

如果您使用的是Mac,則存在文件.DS_STORE,它會在讀取文件夾內容時導致ascii錯誤。

,如果你使用的是Mac

  • 刪除所有DS_Store文件

  • 選擇應用程序,這樣做這些>實用程序來啓動終端。

  • 輸入以下UNIX命令:

  • 須藤查找/ -name」。DS_Store」的-depth -exec RM {} \;

  • 提示輸入密碼,輸入您的Mac OS X管理員密碼

+0

雖然這是一個很好的答案,可能的,一個更可能的原因在Mac上是從編輯器複製到一個能夠導致非Python友好的主要空白的終端,只需更換領先的空白就可以解決問題。 – 2015-11-23 13:01:54