如何从Python3中的变量/文本文件中删除b和\ n? (类型错误)

时间:2016-07-28 20:35:24

标签: python python-3.x

这给我带来了巨大的麻烦。我的代码:

import subprocess
proc = subprocess.Popen("php /var/scripts/data.php", shell=True, stdout=subprocess.PIPE)
scriptresponse = proc.stdout.read()
print (scriptresponse)

输出:

  

b'January \ N'

我尝试scriptresponse.replace ('\n', '')但失败了:

  

TypeError:'str'不支持缓冲区接口

如何从b中移除\nscriptresponse,以便输出如下所示:

  

一月

1 个答案:

答案 0 :(得分:1)

尝试将universal_newlines=True作为参数添加到Popen来电。

docs中所述:

  

如果 universal_newlines True,文件对象stdin,stdout和stderr将按通用换行模式打开为文本流,如上面常用参数中所述,否则它们将打开为二进制流。

现在你有一个二进制字符串(由b表示)。如果仍有尾随换行符,请在字符串上使用rstrip()方法删除尾随字符。