繁体   English   中英

如何在Python中将\\ n格式化为换行符

[英]How can I format \n to a line break in Python

我正在尝试从以下代码行中打印输出:

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>**

代替这个:

**Microsoft Windows [Version 6.3.9600]**

**(c) 2013 Microsoft Corporation. All rights reserved.**

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

您不必担心。 字符串中的\\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)

subprocess.check_output的文档所述:

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

因此,您得到的是一个字节对象,该对象包含命令输出的编码字节。 您可以在打印对象时看到此内容。 字节文字在打印时和在打印repr时都在引号前面带有b

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

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

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

暂无
暂无

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

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