如何格式化\ n到Python中的换行符

时间:2016-11-28 00:08:35

标签: python python-3.x

我试图打印出这行代码的输出:

   public void onPause() {

        permissionCheck = ContextCompat.checkSelfPermission(this,
                android.Manifest.permission.ACCESS_FINE_LOCATION);
        if (permissionCheck == PackageManager.PERMISSION_GRANTED)
        {
            PSLocManager.removeUpdates(PSLocListener);
        }
    super.onPause();

    }

但输出是这样的

subprocess.check_output('cmd.exe /K cmd',shell=False)

而不是:

**Microsoft Windows [Version 6.3.9600]\r\n(c) 2013 Microsoft Corporation. All rights reserved.\r\n\r\nC:\\Users\\19leungc8\\Desktop>\r\nC:\\Users\\19leungc8\\Desktop>**

如果需要,我会提供更多信息。

2 个答案:

答案 0 :(得分:2)

您无需担心。字符串中的\n表示字符串中的新行。如果您要打印check_output()的内容,您会在控制台中看到\n替换为新行。例如:

>>> my_text = "1234\n\n1234"
>>> my_text
'1234\n\n1234'
#    ^ value of `my_text` holds `\n`

# on printing the `my_text`, `\n` is replaced with new line
>>> print(my_text)
1234

1234

在你的情况下,你应该这样做:

my_output = subprocess.check_output(...)
print(my_output)

答案 1 :(得分:1)

正如subprocess.check_output的文档所述:

  

默认情况下,此函数将以编码字节的形式返回数据。输出数据的实际编码可能取决于被调用的命令,因此通常需要在应用程序级别处理对文本的解码。

所以你得到的是一个bytes对象,它包含作为编码字节的命令输出。打印对象时可以看到这个;字节文字在打印时和打印b时在引号前都有repr

>>> x = b'foo bar'
>>> print(x)
b'foo bar'
>>> x        # basically the same as print(repr(x))
b'foo bar'

为了从中获取正确的字符串,您需要使用bytes.decode() 解码字节对象。请注意,为了将字节解码为字符串,您需要知道数据编码的编码方式。通常,这将是utf-8,在这种情况下,您不需要传递任何参数:

>>> x.decode()
'foo bar'
>>> print(x.decode())
foo bar