Python 像 PHP 一样解压

Posted

技术标签:

【中文标题】Python 像 PHP 一样解压【英文标题】:Python unpack like in PHP 【发布时间】:2015-06-08 16:55:58 【问题描述】:

php我会这样做:

$res = unpack('C*', "string");

$res 变量将是一个大小为 6 的数组:

Array ( [1] => 115 [2] => 116 [3] => 114 [4] => 105 [5] => 110 [6] => 103 ) 

我想在Python 中做同样的事情。我试过这个:

>>> from struct import unpack
>>> unpack("s","string")

但在这种情况下我得到一个错误:

struct.error: unpack requires a string argument of length 1

我只是想知道 - 如果“s”格式代表字符串,为什么长度为 1?我怎样才能实现同样的东西,就像在 PHP 中一样?

【问题讨论】:

您可能应该解释一下您的总体目标是什么,因为可能有更好的方法来实现它。 在 PHP 中,我实现了一个短代码 sn-p,它比较两个文档并收集所有更改。如果我有文档的初始版本和所有更改的历史记录(这比我存储整个文档要少得多),那么我可以随时轻松地恢复文档。我决定在 Python 中做同样的事情。 哦,其实我觉得,基于Python中的bytearray函数找到了更好的解决方案。 你检查过docs.python.org/2/library/difflib.html 吗? 这些方法很棒!谢谢!但就我而言,我认为,手工制作的微小方法就足够了 【参考方案1】:

这是因为struct.unpack 格式s 表示“字符串”。默认情况下它是一个 1-char 字符串,否则您必须指定长度,例如10s 用于 10 个字符的字符串。

无论如何,Python 字符串已经表现得像不可变的字符数组,因此您可以执行 s[3] 并获得第 4 个(从零开始的)字符。如果您需要明确地将字符串分解为字典(类似于 PHP 关联数组),您可以这样做:

 s = dict(enumerate("string"))

但我强烈建议不要这样做。

【讨论】:

行得通!谢谢你,先生。我会在 7 分钟内投票。 @Jacobian 我想你的意思是我会 接受 7分钟内跨度> @Bhargav Rao。是的,当然。

以上是关于Python 像 PHP 一样解压的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中解压12个字节? php代码可用!试图将其转换为 python

golang怎么引入其它文件,像php的include一样

《像计算机科学家一样思考Python》pdf

Java可以像Python一样方便爬去世间万物

queryList 一次抓取多个网页内容的方法--目前只有用循环 替换页码或者给出url循环进行 queryList没有像python一样的yied迭代方法 queryList 实现多个实例抓取

一日一技:在 Python 中像字典一样持久化数据