如何从python子进程的输出中剥离和删除特殊字符



我正在使用Python子进程执行如下所示的命令:

process = subprocess.Popen(['debug', 'file.tgz'], 
stdout=subprocess.PIPE,stderr=subprocess.PIPE)

while True:
output = process.stdout.readline()
print(str(output.strip()).encode())
return_code = process.poll()
if return_code is not None:
break 

我得到的结果如下所示:

b"b'Registers:'"

这正是我所期待的。

Registers:

我正在使用编码,但仍然看到相同的输出。如果我在命令行上运行相同的进程,我会得到相同的输出。

如何删除这些特殊字符?

  • 跳过str((;这将消除内部b'...'
  • 您想要.decode而不是.encode,因为您想要将字节流(来自子进程(转换为字符串(用于打印(。您需要知道它使用的是哪种编码,以及(如果适用(如何处理格式错误的数据
  • (可选(在解码后而不是解码前去除空白,也可以去除非ASCII空白字符(如果有的话(
print(output.decode('utf8', errors='strict').strip())

最新更新