gpt4 book ai didi

python - 字符串比较 : Actual newline is never recognized as "\n"

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:45 25 4
gpt4 key购买 nike

我正在尝试通过编写一个脚本来学习一些 Python,以通过串行连接与我的交换机进行通信。

    while char is not "\n":
char = port.read(1)
sys.stdout.write(char)

我尝试比较输出并在找到换行符时结束循环,但它永远不起作用。

我什至尝试对一些输出进行编码以确保确实有换行符,它看起来像这样:

0000420   G   I   G   A   l   i   n   e   2   6   0   0   M       l   o
0000440 g i n : \r \n G I G A l i n e 2
0000460 6 0 0 M l o g i n : \r \n G I
0000500 G A l i n e 2 6 0 0 M l o g i
0000520 n : \r \n G I G A l i n e 2 6 0 ...

可能是什么问题?

最佳答案

你想要

while char != "\n":

在比较中使用 is 检查比较中的两个对象是否是完全相同的对象,它不会检查它们是否具有相同的值。

>>> char = "\n"
>>> char == "\n"
True
>>> char is "\n"
False
>>> a = char
>>> a is char
True
>>> id(a)
139751408202160
>>> id(char)
139751408202160 # char and a have the same id, thus `a == char` is True
>>> id("\n")
139751346017264 # "\n" has a different id, so `char is "\n"` is False

通常,在处理单例对象时,您应该只在 Python 中使用 is 比较,例如 NoneTrue , 和 False。对于字符串、整数等,您应该使用 ==!=

关于python - 字符串比较 : Actual newline is never recognized as "\n",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com