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
,而不是&
用于布尔逻辑等
你用什么编辑器来写你的代码?
这是您的实际代码,还是您尝试重写伪代码来描述问题?
@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
,而不是 &
作为布尔 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
使用Python2.x,在Pycharm工具下,如果存在中文等非英文字符输出或注释时,运行代码,会出现提示:SyntaxError: Non-ASCII character 'xe7'(