非ASCII字符错误python

问题描述:

我是一个初学程序员,试图编写一个将生成随机密码的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

您在标点符号列表中有>><<符号。

这些都是无效的。试着找到自己的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

#coding: utf-8行需要位于文件的顶部以允许非ASCII字符。

£,«»不是ASCII。

虽然您可能不想在您的密码中使用非ASCII字符,并且在大多数网站上都不允许这些字符,但理论上不允许它们被允许。

如果您使用的是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