【发布时间】:2013-12-23 02:32:59
【问题描述】:
我正在通过使用 python3.3 进行 python 挑战来学习 python,我在 question eight。标记中有一条注释,为您提供两个 bz2 压缩的 unicode 字符串输出字节字符串,一个用于用户名,一个用于密码。还有一个链接,您需要在其中输入解压缩的凭据。 轻松解决此问题的一种方法是手动复制字符串并将其作为字节字符串分配给两个变量,然后使用 bz2 库对其进行解压缩:
>>>un=b'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
>>>print(bz2.decompress(un).decode('utf-8'))
huge
但这不适合我,因为我想通过运行我的 python 文件来获得答案。 我的代码是这样的:
>>>import bz2, re, requests
>>>url = requests.get('http://www.pythonchallenge.com/pc/def/integrity.html')
>>>un = re.findall(r'un: \'(.*)\'',url.text)[0]
>>>correct=b'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
>>>print(un,un is correct,sep='\n')
b'BZh91AY&SYA\\xaf\\x82\\r\\x00\\x00\\x01\\x01\\x80\\x02\\xc0\\x02\\x00 \\x00!\\x9ah3M\\x07<]\\xc9\\x14\\xe1BA\\x06\\xbe\\x084'
False
问题在于,当它从 unicode 字符串转换为字节字符串时,会添加转义的反斜杠,因此 bz2 模块无法读取它。我已经尝试了我所知道的所有内容以及搜索时发现的内容。
如何将其从 unicode 转换为 byte 以使其不会被更改?
【问题讨论】:
-
我仍在测试这是否是您的实际错误,但
is不是正确的运算符,无法查看您是否正确检索了内容。is测试对象相等,而不是语义相等。 -
感谢您的宝贵时间,您有什么想法吗?似乎无法删除或替换其中一个斜杠,而且我不知道如何在不转换的情况下将 unicode 字符串分配为字节字符串。感谢您对
is声明的评论。
标签: python string byte python-3.3