繁体   English   中英

如何从 python 子进程的输出中去除特殊字符

[英]How to strip and removed special characters from the out put of python sub process

我正在使用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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM