在Python3中修剪字符串

在Python3中修剪字符串,python,whitespace,trim,Python,Whitespace,Trim,我使用此函数获取文件类型: def get_file_type(): try: cmd = ['/usr/bin/file', '/home/user'] p = Popen(cmd, stdout=PIPE).communicate()[0] p = str(p).split(':')[1:] if len(p) > 1: ' : '.join(p).strip().replace('\\n', '') else:

我使用此函数获取文件类型:

def get_file_type():
try:
    cmd = ['/usr/bin/file', '/home/user']
    p = Popen(cmd, stdout=PIPE).communicate()[0]
    p = str(p).split(':')[1:]
    if len(p) > 1:
        ' : '.join(p).strip().replace('\\n', '')
    else:
        p = p[0].strip().replace('\\n', '')
    print(p)
except CalledProcessError:
    print('unknown')
但它返回以下内容:目录的 结尾的撇号不是一个打字错误,它是困扰我的。我不明白为什么(不是因为它让我烦恼……)


谢谢

问题是您将字节视为字符串,而使用的是Python 3。因此,当您调用
str(p)
时,得到的结果如下所示:

"b'/home/user: directory\\n'"

您可以通过执行
p.decode().split
而不是
str(p)。split

来解决此问题。问题是您将字节视为字符串,并且使用的是Python3。因此,当您调用
str(p)
时,得到的结果如下所示:

"b'/home/user: directory\\n'"

您可以通过执行
p.decode().split
而不是
str(p)。split

无法复制来修复此问题。在重新分配之前,
p
的值是多少?当
len(p)>1
时,您正在执行一个连接、剥离和替换操作,您正在丢弃该操作的结果。在重新分配之前,您可能希望将其分配回
p
@tobias\u k p:[“目录\\n'”]@jasonharper yes^^^^^可能需要复制。在重新分配之前,
p
的值是多少?当
len(p)>1
时,您正在执行一个连接、剥离和替换操作,您正在丢弃该操作的结果。您可能想在重新分配之前将其分配回
p
@tobias\u k p:[“directory\\n'”@jasonharper yes^^^^^谢谢我目前正在升级到python3,我认为将字节转换为字符串是正确的方法:我现在知道它不是。谢谢我目前正在升级到python3,我认为它是将字节转换为字符串的正确方法:我现在知道它不是。谢谢