SyntaxError: 以 '\x91' 开头的非 UTF-8 代码

Posted

技术标签:

【中文标题】SyntaxError: 以 \'\\x91\' 开头的非 UTF-8 代码【英文标题】:SyntaxError: Non-UTF-8 code starting with '\x91'SyntaxError: 以 '\x91' 开头的非 UTF-8 代码 【发布时间】:2014-05-30 07:21:45 【问题描述】:

我正在尝试为一个类编写一个二进制搜索程序,我很确定我的逻辑是正确的,但我不断收到非 UTF-8 错误。我从未见过这个错误,任何帮助/澄清都会很棒!非常感谢。

这是代码。

def main():


    str names = [‘Ava Fischer’, ‘Bob White’, ‘Chris Rich’, ‘Danielle Porter’, ‘Gordon Pike’, ‘Hannah Beauregard’, ‘Matt Hoyle’, ‘Ross Harrison’, ‘Sasha Ricci’, ‘Xavier Adams’]

    binarySearch(names, input(str("Please Enter a Name.")))

    print("That name is at position "+position)


def binarySearch(array, searchedValue):

    begin = 0 
    end = len(array) - 1 
    position = -1 
    found = False

    while !=found & begin<=end:
        middle=(begin+end)/2

        if array[middle]== searchedValue:
            found=True 
            position = middle
        elif array[middle] >value:
            end=middle-1
        else:
            first =middle+1
return position

【问题讨论】:

发布的代码中有很多个语法错误。带空格的str names 是无效的Python,单引号是无效的ASCII 单引号,Python 使用and,而不是&amp; 用于布尔逻辑等 你用什么编辑器来写你的代码? 这是您的实际代码,还是您尝试重写伪代码来描述问题? @g.d.d.c:好吧,看到我可以通过将 OP 样本编码为 CP1252 然后使用 Python 3 运行它来重现错误,我们可以假设这是实际代码。 【参考方案1】:

您的编辑器将 ' (ASCII 39) 替换为 U+2018 LEFT SINGLE QUOTATION MARK 字符,这通常表明您使用 Word 或类似的文字处理器而不是纯文本编辑器;文字处理器会尝试使您的文本“更漂亮”,并自动将简单引号之类的内容替换为花哨的引号。然后将其保存在 Windows 1252 codepage encoding 中,其中花哨的引号被保存为 16 进制 91 个字符。

Python 没有。它希望源代码以 UTF-8 格式保存,并使用 '" 作为引号。改用记事本,或者更好的是 IDLE 来编辑 Python 代码。

您的代码中有许多其他错误;例如,您不能在变量名中使用空格,Python 使用 and,而不是 &amp; 作为布尔 AND 运算符。 != 是一个需要 2 个操作数的运算符(表示“不等于”,与 == 相反),布尔 NOT 运算符称为 not

【讨论】:

好吧,我修复了所有的语法错误,但现在它给了我(TypeError:列表索引必须是整数,而不是浮点数)我无法在搜索字段中输入字符串。 @user3352542:使用// 而不是/ 来获得整数(下限)除法。【参考方案2】:

在代码顶部添加这一行。它可能会起作用。

    # coding=utf8

【讨论】:

我认为它必须是#coding=utf-8 UTF-8 是 Python 3 中的默认值,当文件使用的实际编解码器不是 UTF-8 时,添加编码注释将不起作用。这也不会修复所示代码中的许多其他错误。 UTF-8 在 Python 3 中不是默认值。您可以使用此编码注释【参考方案3】:

你用开始你的常量字符串的字符不是正确的字符串分隔符。你正在使用

‘Ava Fischer’   # ‘ and ’ as string delimiters

应该是什么时候

'Ava Fischer'   # Ascii 39 as string delimiter

或许

"Ava Fischer"   # Ascii 34 as string delimiter

【讨论】:

【参考方案4】:

如果您使用的是 Notepad++,请点击顶部的Encoding,然后选择Encode in UTF-8

【讨论】:

以上是关于SyntaxError: 以 '\x91' 开头的非 UTF-8 代码的主要内容,如果未能解决你的问题,请参考以下文章

错误:SyntaxError: identifier starts immediately after numeric literal

命名空间可以用PHP中的数字开头吗?

Oracle:生成一个数字序列,其值以某个数字开头

使用Python2.x,在Pycharm工具下,如果存在中文等非英文字符输出或注释时,运行代码,会出现提示:SyntaxError: Non-ASCII character 'xe7'(

MySQL IF以数字开头做X,否则做Y [重复]

我想使用 Rails 控制台获取姓氏以“x”开头的用户数组