Py学习  »  Python

Python 3 decode(“utf-8”)正在添加只有空格的换行符。我该停止吗?

sho_luv • 3 年前 • 416 次点击  

我试图从另一个程序的输出中读入一些数据。我知道我可以打开文件并将其读入,但是为了解决这个问题,我创建了一个示例文件testdata.txt,如下所示:

cat testdata.txt 
my.local\Sho Admin:13951:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Help:13952:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Production:13953:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Test:13954:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::

在我的代码中,我试图使用subprocess.check_output进行系统调用,并将输出读入变量。但是,当我在没有解码(“utf-8”)的情况下进行解码时,它的形式是字节。所以为了把它转换成字符串,我使用了decode(“utf-8”),但是它在有空格的地方添加了新行。

output = subprocess.check_output(('cat', 'testdata.txt'), shell=False).decode('utf-8')
pprint.pprint((output))

当我执行这个代码时,我得到了这些新行。

('my.local\\Sho '
 'Admin:13951:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho '
 'Help:13952:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho '
 'Production:13953:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho '
 'Test:13954:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n')

我试图使代码看起来像这样:

('my.local\\Sho Admin:13951:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho Help:13952:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho Production:13953:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho Test:13954:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n')
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57092
 
416 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Boris Lipschitz
Reply   •   1 楼
Boris Lipschitz    3 年前

这是“pprint”做的。看看这个小测试代码。是的,你可以告诉pprint在哪里包装,例如, pprint(test, width=300) .

代码:

from pprint import pprint
test=r"""my.local\Sho Admin:13951:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Help:13952:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Production:13953:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Test:13954:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::"""
print(test)
pprint(test)

my.local\Sho Admin:13951:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Help:13952:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Production:13953:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
my.local\Sho Test:13954:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
('my.local\\Sho '
 'Admin:13951:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho '
 'Help:13952:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho '
 'Production:13953:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::\n'
 'my.local\\Sho '
 'Test:13954:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::')