我正在写一些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

当前回答

你会得到一个游离的字节。你可以通过跑步找到它

with open("x.py") as fp:
    for i, line in enumerate(fp):
        if "\xe2" in line:
            print i, repr(line)

你应该用你的程序名替换"x.py"。您将看到行号和有问题的行。例如,在任意插入字节后,我得到:

4 "\xe2        lb = conn.create_load_balancer('my_lb', ['us-east-1a', 'us-east-1b'],[(80, 8080, 'http'), (443, 8443, 'tcp')])\n"

其他回答

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

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

对我来说,这个问题是由引号中的“’”符号引起的。由于我从pdf文件中复制了代码,导致了这个错误。我只是把"'"换成了这个"'"。

我从网上复制粘贴评论时也犯了同样的错误

对我来说,它是单词中的一个引号(')

我只是擦掉,重新打了一遍。

如果您想找出是什么字符导致了这个问题,只需将有问题的变量赋值给一个字符串,并在iPython控制台中打印它。

对我来说

In [1]: array = [[24.9, 50.5]​, [11.2, 51.0]]        # Raises an error

In [2]: string = "[[24.9, 50.5]​, [11.2, 51.0]]"     # Manually paste the above array here

In [3]: string
Out [3]: '[[24.9, 50.5]\xe2\x80\x8b, [11.2, 51.0]]' # Here they are!

我很长时间都找不到问题所在,但后来我意识到我从web中复制了一行“UTC-12:00”,其中的连字符/破折号导致了问题。我再写一遍“-”,问题就解决了。

有时候复制粘贴行也会出错。在这种情况下,只需重写复制粘贴的代码,它就可以工作。在重写时,它看起来像什么都没有改变,但错误将会消失。