问:是否可以使用Python 3.5的字符串格式化语法创建格式化字符串并进行左截断?
基本上我想做的是获取git SHA:
"c1e33f6717b9d0125b53688d315aff9cf8dd9977"
仅使用格式字符串,获取并显示右侧8个字符:
"f8dd9977"
我尝试过的方法:
语法错误
>>> "{foo[-8:]}".format(foo="c1e33f6717b9d0125b53688d315aff9cf8dd9977")
>>> "{foo[-8]}".format(foo="c1e33f6717b9d0125b53688d315aff9cf8dd9977")
>>> "{:8.-8}".format("c1e33f6717b9d0125b53688d315aff9cf8dd9977")
错误的结果
### Results in first 8 not last 8.
>>> "{:8.8}".format("c1e33f6717b9d0125b53688d315aff9cf8dd9977")
虽然能够工作,但是不灵活且繁琐
### solution requires that bar is always length of 40.
>>> bar="c1e33f6717b9d0125b53688d315aff9cf8dd9977"
>>> "{foo[32]}{foo[33]}{foo[34]}{foo[35]}{foo[36]}{foo[37]}{foo[38]}{foo[39]}".format(foo=bar)
有一个类似的问题被问到了,但从未得到答案。然而我的问题不同之处在于,我只能使用格式化字符串,并且无法更改输入参数的范围。这意味着以下解决方案是不可接受的:
>>> bar="c1e33f6717b9d0125b53688d315aff9cf8dd9977"
>>> "{0}".format(bar[-8:])
我需要澄清的另一个方面是... 上述内容解释了问题最简单的形式。在实际背景下,这个问题更正确地表达为:
>>> import os
>>> "foo {git_sha}".format(**os.environ)
我希望能够左截取 "git_sha" 环境变量。诚然,这比最简单的形式稍微复杂了一些,但如果我能解决最简单的问题,我就能找到解决更复杂问题的方法。
f'{s[-8:]}'
即可。 - Padraic Cunningham'{foo[32]}{foo[33]}{foo[34]}{foo[35]}{foo[36]}{foo[37]}{foo[38]}{foo[39]}'.format(foo='{foo:>40}'.format(foo=text))
- Nick