我正在写一些python代码,我收到了标题中的错误消息,从搜索这与字符集有关。

这是导致错误的行

hc = HealthCheck("instance_health", interval=15, target808="HTTP:8080/index.html")

我不知道什么字符不是在ANSI ASCII集?此外,搜索“\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

当前回答

当我在阅读文本文件时遇到类似的问题时,我使用…

f = open('file','rt', errors='ignore')

其他回答

如果您只是试图使用UTF-8字符,或者不关心它们是否在代码中,请将这一行添加到.py文件的顶部

# -*- coding: utf-8 -*-

当我在阅读文本文件时遇到类似的问题时,我使用…

f = open('file','rt', errors='ignore')

我试图解析那个奇怪的窗口引号和尝试几件事后,这里是工作的代码片段。

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)

在.py文件的第一行中添加# coding=utf-8行可以解决这个问题。

请在下面的链接中阅读更多关于该问题及其修复的信息,在本文中,问题及其解决方案有漂亮的描述:https://www.python.org/dev/peps/pep-0263/

对我来说,问题是由于将代码输入Mac Notes,然后从Mac Notes复制并粘贴到我的vim会话中以创建我的文件。这使得我的单引号成为弯曲型。为了解决这个问题,我在vim中打开我的文件,用直引号替换了所有的弯曲单引号,只是删除和重新输入相同的字符。Mac Notes让相同的按键产生弯曲的单引号。