python3前面加b_如何在python3中删除b符号

如何从python3脚本中删除b符号?

import subprocess

get_data=subprocess.check_output(["df -k | awk '{print $6}'"],shell=True)

data_arr=get_data.split()

data_arr.pop(0)

data_arr.pop(0)

for i in data_arr[:]:

print(str(i))

输出量

b'/dev/shm'

b'/run'

b'/sys/fs/cgroup'

b'/'

b'/tmp'

b'/test'

b'/boot'

b'/home'

b'/var'

b'/mnt/install'

b'/mnt/snapshot'

b'/mnt/share'

b'/mnt/storage'

b'/mnt/linux'

b'/mnt/download'

b'/run/user/1001'

解决方法:

b符号表示check_process的输出是字节而不是str.删除它的最好方法是在对其进行任何进一步的工作之前将输出转换为字符串:

byte_data=subprocess.check_output(["df -k | awk '{print $6}'"],shell=True)

str_data = byte_data.decode('utf-8')

data_arr=str_data.split()

...

该解码方法将处理您在字符串中可能包含的所有unicode.如果您的默认编码(或我想为awk使用的编码)不是UTF-8,请在上面的示例中替换正确的编码.

解决这个问题的更好方法是告诉check_output将stdout作为文本流打开.最简单的方法是添加一个Universal_newlines = True参数,它将对当前语言环境使用默认编码:

str_data = subprocess.check_output(["df -k | awk '{print $6}'"], shell=True, universal_newlines=True)

另外,您可以指定一个显式编码:

str_data = subprocess.check_output(["df -k | awk '{print $6}'"], shell=True, encoding='utf-8')

在这两种情况下,都不需要解码,因为输出已经是str而不是字节了.

标签:python-3-x,python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值