python 当Unicode在elif语句中时,为什么错误处理错误消息?

dba5bblo  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(124)

例如,如果您运行以下代码:

text = "Hi"

if text == "Hello":
    print("Hello")
elif text == "Hi":
    emoji = '\U000274C'
    print(emoji)
else: 
    print("")

你会得到
"缩进错误:意外缩进"
作为一个错误消息,但是如果你只运行emoji = '\U000274C'你将得到正确的错误
"语法错误:(unicode错误)"unicodeescape"编解码器无法解码字节
在位置0 - 8:\UXXXXXXXX转义被截断"
知道为什么吗?这是一个bug还是一个特性,为什么?正确的信息非常有用,因为它清楚地表明你在unicode中忘记了一个零,而缩进错误是完全无用的。
我期待一个有用的错误消息,它不清楚我是否这个行为是正确的,如果它是一个错误。

njthzxwz

njthzxwz1#

你好像没有写对表情符号unicode。它通常是8位数。你只写了7位数,所以检查这部分。
我用一个流行的unicode例子稍微修改了一下'elif'部分。Unicode和CDLR-name都可以工作并返回😀。它甚至可以在Online-Python-Compiler上工作。另一次尝试'\U0000274C',它看起来与您的unicode最相似,返回。

text = "Hi"
if text == "Hello":
    print("Hello")
elif text == "Hi":
    emoji = "\U0001f600"
    # emoji = "\N{grinning face}"
    print(emoji)
else: 
    print("")

相关问题