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