我试图让Ardinput传递到if "(Ardinput == stagecode):"
但似乎Ardinput丢失了它的内容
这是我的代码输出
Start capture
b'STAGErn'
STAGE
Befor CR
STAGE
法典:
url = config.url()
stagecode = "STAGE "
ser = serial.Serial(
port='COM3',
baudrate=9600,
)
def stage():
urllib.request.urlopen(url + 'f.stage')
def capture():
global Ardinput
print ("Start capture")
while (1):
line = ser.readline()
if (line != ""):
print (line)
Ardinput = line
Ardinput = Ardinput.decode("utf-8")
print (Ardinput + ' Befor CR')
Ardinput = Ardinput[:-1]
print (Ardinput)
if (Ardinput == stagecode):
print (stagecode + ' IN IF FUNCTION')
stage()
capture()
您只删除了n
换行符,但保留了r
回车符。
请改用str.strip()
从开头和结尾删除所有空格:
Ardinput = line.decode('utf8').strip()
并从stagecode
中删除空格:
stagecode = "STAGE"
为了将来参考,如果使用 repr()
甚至 ascii()
函数生成值的字符串文本版本,则更容易发现这些差异:
>>> line = b'STAGErn'
>>> Ardinput = line.decode('utf8')[:-1]
>>> print(Ardinput)
STAGE
>>> print(repr(Ardinput))
'STAGEr'
请注意后者如何显示值中仍有r
回车符。
r
和n
被视为空格,空格和制表符以及不间断空格也被视为空格:
>>> 'tt Hello world! xa0rn'.strip()
'Hello world!'
请注意,中间的空间未被删除; str.strip()
仅适用于字符串的前导端和尾部。
rn
表示带有新行的回车符(因此:
STAGE
Befor CR
而不是STAGE Befor CR
)。例如,您必须将其剥离 Ardinput.decode('utf-8').strip()
以删除换行符,或使用 Ardinput.decode('utf-8')[:-2]
删除最后 2 个字符)。