【问题标题】:A simple way to pad and slice to get a fixed length string [closed]填充和切​​片以获得固定长度字符串的简单方法[关闭]
【发布时间】:2012-12-15 17:47:51
【问题描述】:

我正在寻找一个函数(希望是内置的),它可以创建固定宽度的 certian 填充和对齐字符串。就我而言,我有一个需要放入固定格式文件的名称列表(以及其他数据)。

示例 1:"Spams spam and spam""viking inc" 都需要放入 15 个字符的固定宽度字段中。
结果:("Spams spam and ", "viking inc ")

示例 2:将(25, 100, 1234567890) 转换为用零填充的8 字符固定宽度字符串的数字版本。
结果:("00000025", "00000100" "34567890")

可接受的答案还可能包括称我为白痴并告诉我固定宽度的字符串处理有些简单。这也应该在 python 2.7 和 3.3 中理想地工作(我们公司目前是 2.7,但很快就会迁移到 3.3)

我尝试过的:

"{0:<30}".format("viking inc")  #works
"{0:<30}".format("Spams spam and spam") #does not work, output it too long.

【问题讨论】:

  • 我将编辑并发布我当时尝试的内容以及失败的原因。我已经阅读了十几次这些文档,只是没有看到我需要什么。
  • 我认为最后的例子是为了写"{0:&lt;15}"

标签: python string python-3.x python-2.7


【解决方案1】:

对于数字:

>>> for n in (25, 100, 1234567890):
        print('{:0>8}'.format(n)[-8:])

00000025
00000100
34567890

对于字符串,您的示例有点模棱两可。如果您只想选择前 15 个字符(最多),那么只需这样做:

>>> 'Spams spam and spam'[:15]
'Spams spam and '
>>> 'viking inc'[:15]
'viking inc'

如果您想再次填充它(在您的示例中没有这样做),那么您可以再次使用 format:

>>> '{:<15}'.format('Spams spam and spam'[:15])
'Spams spam and '
>>> '{:<15}'.format('viking inc'[:15])
'viking inc     '

【讨论】:

  • .format(n)[-8] 是我建立联系所需的精神动力。出于某种原因,我尝试像那样切片并放弃了它。
猜你喜欢
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2023-03-15
  • 2012-11-08
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多