Python次级进程比较字符串 - 去除垃圾



我有一个读取RFID标签的C程序。我正在尝试从该C程序中获取输出(它使用sudo和args)并将其与字符串进行比较

这是我的代码以及一些调试信息。

import subprocess
#args - the c program and its args
args = ["sudo", "./rc522", "-r", "-b", "1"]
process = subprocess.Popen(args,stdout=subprocess.PIPE,stderr=None)
rfidRead=process.communicate()[0]
rfidRead=rfidRead.decode('utf-8')
print (len(rfidRead))
rfidRead = rfidRead[14:440]
print (len(rfidRead))
print (rfidRead)
if "49.4f.09.0a.0c.0f.00.00.00.00.00.00.00.00.00.00" in rfidRead:
        print("unlocked")
else:
        print("Not unlocked")

这是输出...

446
426
49.4f.09.0a.0c.0f.00.00.00.00.00.00.00.00.00.00
Not unlocked

我只是找不到管道输出中隐藏的字符和事物你能帮忙吗?

这是使用repr:

的RFIDREAD输出
'x1b[1;93m4x1b[00mx1b[1;93m9x1b[00m.x1b[1;93m4x1b[00mx1b[1;93mfx1b[00m.x1b[1;93m0x1b[00mx1b[1;93m9x1b[00m.x1b[1;93m0x1b[00mx1b[1;93max1b[00m.x1b[1;93m0x1b[00mx1b[1;93mcx1b[00m.x1b[1;93m0x1b[00mx1b[1;93mfx1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0x1b[00m.x1b[1;93m0x1b[00mx1b[1;93m0'

我在Jasonharper的帮助下解决了答案。执行repr(...)后,我决定使用Google x1b,并找到了有关VT100的Stackoverflow文章,并且这是VT100代码,所以我进行了另一个Google搜索来解码VT100,并且我有一个正则表达式以删除逃生代码...这是我发现的文章。如何从python中的字符串中删除ANSI逃生序列

最新更新