如何将python对象转换为字符串?
如果我调用os.uradom(64),我将得到64个随机字节。关于这个问题,我试过了 但是得到了回溯错误,指出字节不在utf-8中如何将python对象转换为字符串?,python,string,random,python-3.x,byte,Python,String,Random,Python 3.x,Byte,如果我调用os.uradom(64),我将得到64个随机字节。关于这个问题,我试过了 但是得到了回溯错误,指出字节不在utf-8中 Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte 是否有一种完全
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
是否有一种完全可靠的方法将这些字节解码成字符串表示?我正在生成sudo随机令牌,以便跨多个数据库引擎跟踪相关文档。您有随机字节;我会非常惊讶,如果它能被解码成一个字符串 如果要使用unicode字符串,请从拉丁语-1解码:
a.decode('latin1')
因为它将字节一对一映射到相应的Unicode代码点 您可以使用base-64编码。在这种情况下:
a = os.urandom(64)
a.encode('base-64')
还要注意,我在这里使用的是
encode
,而不是decode
,因为decode
试图将它从您指定的任何格式转换为unicode。因此,在您的示例中,您将随机字节视为一个有效的utf-8
字符串,这在随机字节中很少出现。下面的代码将同时适用于Python 2.7和3:
from base64 import b64encode
from os import urandom
random_bytes = urandom(64)
token = b64encode(random_bytes).decode('utf-8')
这个简单的方法:
a = str(os.urandom(64))
print(F"the: {a}")
print(type(a))
我收到一个错误,说明“bytes”对象没有属性encode。这段代码特定于某些版本的python吗?我正在使用3.3我不确定python3.x。我在用蟒蛇。7@user1876508您是否尝试过使用
str(b'hello',encoding)
?它可能使用'base-64'作为编码。str(os.uradom(64),'base-64')给了我LookupError:未知编码:base-64似乎每次都能工作。我只需要一个django char字段将接受的字符串;很遗憾,Django在即将发布的1.6版本中只添加了一个二进制字段。。。为什么不让一个更“中心”的数据库生成自己的ID,它引用其他ID。。。?或者,与其使用uradom
,为什么不使用uuid4或类似的?这也可以用于生成随机种子?Django的生成随机字符串逻辑。
from base64 import b64encode
from os import urandom
random_bytes = urandom(64)
token = b64encode(random_bytes).decode('utf-8')
a = str(os.urandom(64))
print(F"the: {a}")
print(type(a))