python子进程管道比较字符串 - 删除垃圾

时间:2017-09-19 01:18:53

标签: subprocess

我有一个读取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;93m4\x1b[00m\x1b[1;93m9\x1b[00m.\x1b[1;93m4\x1b[00m\x1b[1;93mf\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m9\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93ma\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93mc\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93mf\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0\x1b[00m.\x1b[1;93m0\x1b[00m\x1b[1;93m0'

1 个答案:

答案 0 :(得分:0)

我在jasonharper的帮助下找到了答案。 在做了repr(...)之后我决定google \ x1b并找到一篇关于vt100的stackoverflow文章,这是vt100代码,所以我做了另一个谷歌搜索解码vt100,我有一个正则表达式来删除转义码......这是我找到的文章。 How can I remove the ANSI escape sequences from a string in python