Python“SyntaxError:非ASCII字符'\ xe2'在文件”
我正在写一些Python代码,并收到错误信息,如在标题中,从search这个字符集。
这是导致错误的行
hc = HealthCheck("instance_health", interval=15, target808="HTTP:8080/index.html")
我无法弄清楚什么字符不在ANSI ASCII集? 此外,search“\ xe2”不会再提供关于出现的字符的信息。 该行中的哪个字符引起了这个问题?
我也看到了这个问题的一些修复,但我不确定使用哪个。 有人可以澄清是什么问题(python不解释unicode,除非被告知这样做?),以及我将如何正确清理它?
编辑:这里是所有的错误附近的行
def createLoadBalancer(): conn = ELBConnection(creds.awsAccessKey, creds.awsSecretKey) hc = HealthCheck("instance_health", interval=15, target808="HTTP:8080/index.html") lb = conn.create_load_balancer('my_lb', ['us-east-1a', 'us-east-1b'],[(80, 8080, 'http'), (443, 8443, 'tcp')]) lb.configure_health_check(hc) return lb
你有一个stream浪的字节浮动。 你可以通过运行find它
with open("x.py") as fp: for i, line in enumerate(fp): if "\xe2" in line: print i, repr(line)
你应该在那里用程序的名字replace"x.py"
。 你会看到行号和违规行。 例如,在任意插入该字节后,我得到:
4 "\xe2 lb = conn.create_load_balancer('my_lb', ['us-east-1a', 'us-east-1b'],[(80, 8080, 'http'), (443, 8443, 'tcp')])\n"
如果您只是试图使用UTF-8字符或不在乎它们是否在您的代码中,请将此行添加到.py
文件的顶部
# -*- coding: utf-8 -*-
更改文件字符编码,
总是把下面的代码放到代码的最顶端
# -*- coding: utf-8 -*-
\ xe2是' – '字符,它出现在一些复制和粘贴它使用一个不同的同等看“ – ”,导致编码错误。 使用正确的“ – ”(从键盘button)replace“ – ”(从复制粘贴)。
我从网上复制和粘贴评论时发生同样的错误
对我而言,这是一个单引号(')
我刚刚删除它,重新键入它。
或者你可以简单地使用:
# coding: utf-8
在.py文件的顶部
我在我的评论中发现了这个字符错误(从网上复制/粘贴内容到我的编辑器中进行笔记)。
在文本牧马人解决:
- 突出显示文字
- 进入文本菜单
- select“转换为ASCII”
基于PEP 0263 – 定义Python源代码编码
Python will default to ASCII as standard encoding if no other encoding hints are given. To define a source code encoding, a magic comment must be placed into the source files either as first or second line in the file, such as: # coding=<encoding name> or (using formats recognized by popular editors) #!/usr/bin/python # -*- coding: <encoding name> -*- or #!/usr/bin/python # vim: set fileencoding=<encoding name> :
我试图parsing这个奇怪的窗口apostraphe,并尝试了几件事情后,这是代码段的作品。
def convert_freaking_apostrophe(self,string): try: issuer_rename = string.decode('windows-1252') except: issuer_rename = string.decode('latin-1') issuer_rename = issuer_rename.replace(u''', u"'") issuer_rename = issuer_rename.encode('ascii','ignore') try: os.rename(directory+"/"+issuer,directory+"/"+issuer_rename) print "Successfully renamed "+issuer+" to "+issuer_rename return issuer_rename except: pass #HANDLING FOR FUNKY APOSTRAPHE if re.search(r"([\x90-\xff])", issuer): issuer = self.convert_freaking_apostrophe(issuer)
经过堆栈溢出大概半个小时之后,我发现,如果在注释中使用单引号“'”将会出错:
SyntaxError: Non-ASCII character '\xe2' in file
看了回溯后,我能find我的评论中使用的单引号。
我有这个确切的问题运行下面的简单的.py代码:
import sys print 'version is:', sys.version
帝斯曼上面的代码提供了以下内容:
1'print \ xe2 \ x80 \ x98version是\ xe2 \ x80 \ x99,sys.version'
所以问题是我的文本编辑器使用SMART QUOTES,就像John Y所build议的那样。 更改文本编辑器设置并重新打开/保存文件后,它工作得很好。
当我阅读文本文件时,我有一个类似的问题,我使用…
f = open('file','rt', errors='ignore')
我有这个相同的问题解决scheme很简单。 如果你从网上复制了一些东西,如果有一个像(“, – ,”)这样的符号,只需用键盘上的键来代替它们,问题就会解决。