Why canamp;#39;t Pythonamp;#39;s string.format pad with amp;quot;x00amp;quot;?(为什么可以使用amp;x00amp;来测试Python的字符串格式板?)
本文介绍了为什么可以使用&;x00&;来测试Python的字符串格式板?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用空字符("x00")填充一个字符串。我知道有很多方法可以做到这一点,所以请不要用其他方法来回答。我想知道的是:为什么Python的string.format()
函数不允许用空值填充?
测试用例:
>>> "{0:x01<10}".format("bbb")
'bbbx01x01x01x01x01x01x01'
这表明十六进制转义字符通常有效。
>>> "{0:x00<10}".format("bbb")
'bbb '
但"x00"变为空格("x20")。
>>> "{0:{1}<10}".format("bbb","x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
甚至尝试了其他几种方法。
>>> "bbb" + "x00" * 7
'bbbx00x00x00x00x00x00x00'
此方法有效,但不使用string.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:x00<10}".format("bbb")
>>> spaces == nulls
True
Python显然正在替换空格(chr(0x20)
),而不是Null(chr(0x00)
)。
推荐答案
,因为Python2.7中的string.format
方法是来自Python3string.format
的后端。Python2.7 Unicode是Python3字符串,其中,Python2.7字符串是Python3字节。在Python3中,字符串的类型不适合表示二进制数据。您将使用没有格式方法的字节。因此,您真的应该问,为什么在2.7中对字符串使用format
方法,而实际上它应该只在Unicode类型上,因为这就是在Python3中成为字符串的类型。
我想答案是把它放在那里太方便了。
作为一个相关问题,为什么还没有format
on bytes
这篇关于为什么可以使用&;x00&;来测试Python的字符串格式板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为什么可以使用&;x00&;来测试Python的字符串格式板?
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
猜你喜欢
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01