- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为什么下面两种解码方式返回的结果不同?
>>> import codecs
>>>
>>> data = ['', '', 'a', '']
>>> list(codecs.iterdecode(data, 'utf-8'))
[u'a']
>>> [codecs.decode(i, 'utf-8') for i in data]
[u'', u'', u'a', u'']
这是错误还是预期行为?我的 Python 版本 2.7.13。
最佳答案
这是正常的。 iterdecode
在编码 block 上获取一个迭代器,并在解码 block 上返回一个迭代器,但它不保证一对一对应。它只保证所有输出 block 的串联是对所有输入 block 的串联的有效解码。
如果您查看 source code ,你会看到它明确地丢弃了空的输出 block :
def iterdecode(iterator, encoding, errors='strict', **kwargs):
"""
Decoding iterator.
Decodes the input strings from the iterator using an IncrementalDecoder.
errors and kwargs are passed through to the IncrementalDecoder
constructor.
"""
decoder = getincrementaldecoder(encoding)(errors, **kwargs)
for input in iterator:
output = decoder.decode(input)
if output:
yield output
output = decoder.decode("", True)
if output:
yield output
请注意 iterdecode
存在的原因,以及您不会自己对所有 block 调用 decode
的原因,是解码过程是有状态的。一个字符的 UTF-8 编码形式可能会分成多个 block 。其他编解码器可能具有非常奇怪的状态行为,例如可能会反转所有字符大小写的字节序列,直到您再次看到该字节序列。
关于python - 为什么 codecs.iterdecode() 吃空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43904440/
Closed. This question is off-topic。它当前不接受答案。 想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭
当我的应用中的 NSTextField 获得焦点时,我在接收来自 NSFontPanel 的任何消息时遇到了奇怪的问题。 即使是 NSTextField 的子类也没有从字体面板接收到任何内容。似乎面板
我正在使用简单的 for 循环在一行中移动 pacman,但 pacman 闪烁或者可能是整个屏幕更新和闪烁。我怎样才能让它更平滑? 编辑: 我目前正在使用 C++ Turbo 及其内置图形库。但是我
我有一个简单的 TreeCellRenderer,它从节点中提取 JButton,并将其输出到 JTree。 public class ButtonCellRenderer extends JButt
我在编译时遇到了这两个错误,但我不明白我做错了什么。 main.cpp|107|error: 'sqrt' was not declared in this scope| main.cpp|107|e
我目前正在建立一个程序,在吃豆子迷宫中吃掉所有食物。但是,每次Pacman进行新动作时,我的程序都会被调用,因此程序结束时不会保存任何内存,并且只会返回一个动作:L,R,U或Down。我是AI新手,也
我需要在矩阵表示的图中找到成本较低的路径。我对 Dijkstra 算法进行了一些研究,但我需要一个 vector ,其中包含最短路径中的节点序列,而不是距离本身。该游戏是为 Assembly 制作的,
我试图在用 Python 处理后将一些 XML 数据导入我的 MySQL 数据库。为了简单起见,我通过一个使用 SQLAlchemy 访问我的数据库的脚本来完成这一切。 XML 文件有大约 80,00
我有 2 个用于 pacman 游戏开始的类(class),我对按键监听器或按键绑定(bind)的工作方式感到非常困惑。我有向上、向下、向右、向左移动的方法。我花了几个小时试图找出答案,但它不会调用常
参见Having Some Issues With Making Pacman才能充分理解这个问题。只需查看已接受答案的第一部分即可。这是用java编写的! 我正在使用上面链接中所示的数组。我的 pa
我正在用 Java 创建 pacman 游戏,但有 1 个无法解决的问题。问题如下: 游戏屏幕上有 4 个按钮,分别用于:上、下、左、右。问题是我无法在 x 位置和 y 位置同时使用按钮,因为我总是得
我正在使用 Jquery 制作吃 bean 人游戏。吃 bean 人的移动由箭头键引导,这会触发一个 setInterval() ,使他重复移动他宽度的距离,给人一种他在完全直线移动的错觉。按一个新键
我目前正在用 Java 制作吃 bean 人游戏。不过我有一个关于鬼魂的问题。 我知道鬼魂的攻击方式并不完全相同。我首先想研究让鬼魂去追吃 bean 的基础知识,而不用担心其中的差异。 我想问你们这些
我是 swift 的新手,我正在尝试编写吃 bean 人程序。我正在尝试将 pacman move 到滑动的方向,到目前为止我已经设法将它 move 到屏幕的边缘,问题是当我尝试将它 move 时不是
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭 9 年前。 Improve
我正在尝试使用 ElementTree 读取 XML并将结果写回磁盘。我的长期目标是以这种方式美化 XML。然而,在我天真的方法中,ElementTree 吃掉了文档中的所有命名空间声明,我不明白为什
我在《吃 bean 人》中找到了很多关于鬼魂 AI 的引用资料,但没有提到在鬼魂被吃 bean 人吃掉后,眼睛是如何回到中央鬼洞的。 在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都
首先,这是吃 bean 人而非幽灵的 AI。 我正在编写一个 Android 动态壁纸,它围绕您的图标播放 PacMan。虽然它通过屏幕触摸支持用户建议,但游戏的大部分内容将由 AI 来玩。我已完成游
我正在制作吃 bean 人,但在框架上绘制图形时遇到问题,当我绘制点图像时,它看起来像蛇游戏,我尝试将我的背景和字符绘制方法都放在渲染中方法,但比我的点图像闪烁 它现在的样子,随意忽略那张随机的脸,这
我正在尝试用 C++ 创建一个基本的 Pacman 游戏(我将在这个问题中使用 Java 语法,因为这更容易演示),但我找不到好的设计选项。 到目前为止,我有 4 个类: - 怪物:可以针对怪物特定的
我是一名优秀的程序员,十分优秀!