gpt4 book ai didi

python - 将 str.center() 与 unicode 字符一起使用时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:20 24 4
gpt4 key购买 nike

我观察到 python 2.7str 对象的 center 方法的奇怪行为 -

>>> print '-'.center(5,'.')        # '-' is the minus or hyphen key on the keyboard.
..-.. # correctly centered
>>> print '─'.center(5, '.') # '─' is NOT the minus or hyphen key on the keyboard.
.─. # incorrectly centered

这是 center 方法实现中的错误还是与使用 unicode 字符有关?
我该如何解决?

[请注意,这在 python 3.2 中工作得很好]

最佳答案

在 Python 2 中,strunicode 类型之间存在区别。 str 是一个字节序列,使用未修改的引号创建。您的 '─' 正在创建一个显示为单个 unicode 字符的 3 字节序列;当您要求 str.center() 将这些字节置于 5 字节宽的字段中时,它会在两边添加一个字节;打印时你只会得到 3 个字形。

如果你创建一个 unicode 对象(使用 u'─' 或 '─'.decode('utf-8')),你现在有一个序列1个unicode字符,将通过在两侧添加2个字符来居中。

Python 3没有这个问题,因为普通的字符串都是unicode字符序列。

关于python - 将 str.center() 与 unicode 字符一起使用时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6694428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com