Python中文
首页
教程
问答
标签
搜索
登录
注册
在python 3中解码base64字符串(是否使用lxml)
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我知道这看起来很简单,我想问题是我对所有这些<em>字节str unicode</em>(和<em>编码解码</em>,坦率地说)还没有一个清晰的理解。</p> <p>我一直在尝试让我的工作代码在Python 3上运行。我遇到的问题是当我用<code>lxml</code>解析一个XML并解码该XML中的base64字符串时。</p> <p>代码现在按以下方式工作:</p> <p>我使用XPath查询<code>'.../binary/text()'</code>检索二进制数据。这将生成一个包含<code>lxml.etree._ElementUnicodeResult</code>对象的单元素列表。然后,使用python 2,我能够:</p> <pre class="lang-py prettyprint-override"><code>decoded = source.decode('base64') </code></pre> <p>最后</p> <pre class="lang-py prettyprint-override"><code>output = numpy.frombuffer(decoded) </code></pre> <p>但是,在python 3上,我得到一条错误消息,说</p> <pre class="lang-py prettyprint-override"><code>AttributeError: 'lxml.etree._ElementUnicodeResult' object has no attribute 'decode' </code></pre> <p>这并不奇怪,因为<code>lxml.etree._ElementUnicodeResult</code>是<code>str</code>的一个子类。</p> <p>另一种方法是使用</p> <pre class="lang-py prettyprint-override"><code> binary = tree.xpath('//binary')[0] binary_string = binary.text </code></pre> <p>这基本上是一样的。那么我该怎么从base64解码呢?我已经看过<code>base64</code>模块,但是它接受一个<code>bytes</code>对象作为参数,我想不出将<code>str</code>表示为<code>bytes</code>的方法,因为如果我尝试构造一个<code>bytes</code>对象,Python将尝试对字符串进行<strong>编码,这是我不需要的。</p> <p>进一步搜索,我发现了<code>binascii</code>模块(如果我没有弄错的话,它是从<code>base64</code>间接调用的),但是对我的字符串调用<code>binascii.b2a_base64()</code>会产生</p> <pre class="lang-py prettyprint-override"><code>TypeError: 'str' does not support the buffer interface </code></pre> <p>另外,我甚至在<a href="https://stackoverflow.com/questions/3283984/decode-hex-string-in-python-3">how to decode a hex string in Python 3</a>上找到了一个答案,但是这是用一个专用的方法完成的,所以我看不出它有什么帮助。</p> <p>有人能告诉我我缺了什么吗?恐怕大部分帖子都无关紧要,只会加重我的羞耻感,但至少你们知道<a href="http://whathaveyoutried.com/" rel="nofollow noreferrer">what I tried</a>。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我没有安装Python3,但听起来您需要将从lxml返回的Unicode转换为字节,也许可以通过调用.encode('ascii')?</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
1 回答
无法使用Django\u mssql\u后端迁移到外部hos
5 回答
无法使用Django&Python3.4连接到MySql
8 回答
无法使用Django+nginx上载媒体文件
6 回答
无法使用Django1.6导入名称模式
5 回答
无法使用Django1.7和mongodb登录管理站点
8 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
1 回答
无法使用Djangockedi验证CBV中的字段
3 回答
无法使用Djangocketditor上载图像(错误400)
4 回答
无法使用Djangocron进行函数调用
9 回答
无法使用Djangofiler djang上载文件
1 回答
无法使用Djangokronos
6 回答
无法使用Djangomssql provid
2 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
2 回答
无法使用Djangomssq迁移Django数据库
7 回答
无法使用Djangonox创建用户
2 回答
无法使用Djangopyodb从Django查询SQL Server
9 回答
无法使用Djangopython3ldap连接到ldap
5 回答
无法使用Djangoredis连接到redis
3 回答
无法使用Django中的FK创建新表
9 回答