在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
答案 0 :(得分:14)
最简单且可以说是最好的方法是使用内置isinstance
和bytes
类型:
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