如何将字符串标识为字节文字?

时间:2016-09-29 19:59:30

标签: python string python-3.x

在Python 3中,如果我有一个字符串:

print(some_str)

得到这样的东西:

b'This is the content of my string.\r\n'

我知道它是一个字节文字。

是否有一个函数可用于确定该字符串是否为字节文字格式(而不是具有Unicode 'u'前缀),而无需先解释?还是有另一个最佳实践来处理这个?我有一种情况,其中获取字节文字字符串需要处理不同于它在Unicode中的处理方式。理论上,这样的事情:

if is_byte_literal(some_str):
    // handle byte literal case
else:
    // handle unicode case

2 个答案:

答案 0 :(得分:14)

最简单且可以说是最好的方法是使用内置isinstancebytes类型:

some_str = b'hello world'
if isinstance(some_str, bytes):
    print('bytes')
elif isinstance(some_str, str):
    print('str')
else:
    # handle

因为,字节文字总是bytes的实例,isinstance(some_str, bytes)当然会评估为True

答案 1 :(得分:4)

只是为了补充其他答案,内置的type也会为您提供此信息。您可以将其与is及相应的类型一起使用以进行相应的检查。

例如,在Python 3中:

a = 'foo'
print(type(a) is str)   # prints `True`
a = b'foo'
print(type(a) is bytes) # prints `True` as well