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

当前回答

我有同样的问题,但这是因为我复制和粘贴字符串,因为它是。 后来,当我手动输入字符串,因为它是错误消失。

我犯了个错误,因为是-号。当我用手动输入代替它时,错误就解决了。

复制字符串10 + 3 * 5/(16−4)

手动输入字符串10 + 3 * 5/(16 - 4)

您可以清楚地看到两个连字符之间有一点不同。

我认为这是因为不同的操作系统使用不同的格式,或者可能只是不同的软件。

其他回答

我用pycharm修复了这个问题。在pycharm的底部可以看到文件编码。我注意到它是UT-8。我把它改成了US-ASCII

我的case \xe2是一个'它应该被'取代。

一般来说,我建议使用例如https://onlineasciitools.com/convert-utf8-to-ascii将UTF-8转换为ASCII

但是如果你想保持UTF-8,你可以使用

#-*- mode: python -*-
# -*- coding: utf-8 -*-

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

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"

我有同样的问题,但这是因为我复制和粘贴字符串,因为它是。 后来,当我手动输入字符串,因为它是错误消失。

我犯了个错误,因为是-号。当我用手动输入代替它时,错误就解决了。

复制字符串10 + 3 * 5/(16−4)

手动输入字符串10 + 3 * 5/(16 - 4)

您可以清楚地看到两个连字符之间有一点不同。

我认为这是因为不同的操作系统使用不同的格式,或者可能只是不同的软件。

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