Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python对象转换为字符串?_Python_String_Random_Python 3.x_Byte - Fatal编程技术网

如何将python对象转换为字符串?

如何将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 是否有一种完全

如果我调用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

是否有一种完全可靠的方法将这些字节解码成字符串表示?我正在生成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))